Vue高频面试问题(含答案),面试官直呼好家伙~

v-text主要用来更新textContent,可以等同于JS的text属性。

这两者等价:

插值表达式{{msg}}

v-html

双大括号的方式会将数据解释为纯文本,而非HTML。为了输出真正的HTML,可以用v-html指令。它等同于JS的innerHtml属性

这个div的内容将会替换成属性值rawHtml,直接作为HTML进行渲染。

v-pre

v-pre主要用来跳过这个元素和它的子元素编译过程。可以用来显示原始的Mustache标签。跳过大量没有指令的节点加快编译。

{{message}}  //这条语句不进行编译

{{message}}

最终仅显示第二个span的内容

v-cloak

这个指令是用来保持在元素上直到关联实例结束时进行编译

{{message}}

在页面加载时会闪烁(插值闪烁问题),先显示:

{{message}}

然后才会编译为:

hello world!

可以用v-cloak指令解决插值表达式闪烁问题,v-cloak在css中用属性选择器设置为display: none;

v-once

v-once关联的实例,只会渲染一次。之后的重新渲染,实例极其所有的子节点将被视为静态内容跳过,这可以用于优化更新性能。

This will never change:{{msg}}  //单个元素

//有子元素

comment

{{msg}}

 //组件

    • {{i}}
    • 上面的例子中,msg,list即使产生改变,也不会重新渲染。

      v-if

      v-if可以实现条件渲染,Vue会根据表达式的值的真假条件来渲染元素。

      yes

      如果属性值ok为true,则显示。否则,不会渲染这个元素。

      v-else

      v-else是搭配v-if使用的,它必须紧跟在v-if或者v-else-if后面,否则不起作用。

      yes

      No

      v-else-if

      v-else-if充当v-if的else-if块,可以链式的使用多次。可以更加方便的实现switch语句。

      A

      B

      C

      Not A,B,C

      v-show

      hello world

      也是用于根据条件展示元素。和v-if不同的是,如果v-if的值是false,则这个元素被销毁,不在dom中。但是v-show的元素会始终被渲染并保存在dom中,它只是简单的切换css的dispaly属性。

      注意:v-if有更高的切换开销

      v-show有更高的初始渲染开销。

      因此,如果要非常频繁的切换,则使用v-show较好;如果在运行时条件不太可能改变,则v-if较好

      v-for

      用v-for指令根据遍历数组来进行渲染

      注意:当v-for和v-if同处于一个节点时,v-for的优先级比v-if更高。这意味着v-if将运行在每个v-for循环中

      v-bind

      v-bind用来动态的绑定一个或者多个特性。没有参数时,可以绑定到一个包含键值对的对象。常用于动态绑定class和style。以及href等。

      简写为一个冒号【 

      v-model

      这个指令用于在表单上创建双向数据绑定

      v-model会忽略所有表单元素的value、checked、selected特性的初始值。因为它选择Vue实例数据做为具体的值

          

      hello {{somebody}}

      这个例子中直接在浏览器input中输入别的名字,下面的p的内容会直接跟着变。这就是双向数据绑定。

      v-on

      v-on主要用来监听dom事件,以便执行一些代码块。表达式可以是一个方法名。

      2**、v-if 和 v-show 有什么区别?******

      ==========================================

      共同点:v-if 和 v-show 都能实现元素的显示隐藏

      区别:

      1. v-show 只是简单的控制元素的 display 属性,而 v-if 才是条件渲染(条件为真,元素将会被渲染,条件为假,元素会被销毁);

      2. v-show 有更高的首次渲染开销,而 v-if 的首次渲染开销要小的多;

      3. v-if 有更高的切换开销,v-show 切换开销小;

      4. v-if 有配套的 v-else-if 和 v-else,而 v-show 没有

      5. v-if 可以搭配 template 使用,而 v-show 不行

      3.组件中 data 为什么是一个函数?

      ================================

      为什么组件中的 data 必须是一个函数,然后 return 一个对象,而 new Vue 实例里,data 可以直接是一个对象?

      // data

      data() {

      return {

      message: “子组件”,

      childName:this.name

      }

      }

      // new Vue

      new Vue({

      el: ‘#app’,

      router,

      template: ‘’,

      components: {App}

      })

      因为组件是用来复用的,且 JS 里对象是引用关系,如果组件中 data 是一个对象,那么这样作用域没有隔离,子组件中的 data 属性值会相互影响,如果组件中 data 选项是一个函数,那么每个实例可以维护一份被返回对象的独立的拷贝,组件实例之间的 data 属性值不会互相影响;而 new Vue 的实例,是不会被复用的,因此不存在引用对象的问题。

      4.Vue 组件间通信有哪几种方式?

      ==============================

      Vue 组件间通信是面试常考的知识点之一,这题有点类似于开放题,你回答出越多方法当然越加分,表明你对 Vue 掌握的越熟练。Vue 组件间通信只要指以下 3 类通信:父子组件通信、隔代组件通信、兄弟组件通信,下面我们分别介绍每种通信方式且会说明此种方法可适用于哪类组件间通信。

      (1)props / $emit 适用 父子组件通信

      这种方法是 Vue 组件的基础,相信大部分同学耳闻能详,所以此处就不举例展开介绍。

      (2)ref 与 $parent / $children 适用 父子组件通信

      ref:如果在普通的 DOM 元素上使用,引用指向的就是 DOM 元素;如果用在子组件上,引用就指向组件实例

      p a r e n t   /   parent /  parent / children:访问父 / 子实例

      (3)EventBus ($emit / $on) 适用于 父子、隔代、兄弟组件通信

      这种方法通过一个空的 Vue 实例作为中央事件总线(事件中心),用它来触发事件和监听事件,从而实现任何组件间的通信,包括父子、隔代、兄弟组件。

      (4) a t t r s / attrs/ attrs/listeners 适用于 隔代组件通信

      最后

      自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

      深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

      因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

      img

      既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

      如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

      由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
      隔代组件通信**

      最后

      自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

      深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

      因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

      [外链图片转存中…(img-tZC6EjS8-1715020971656)]

      [外链图片转存中…(img-vvnPczjT-1715020971657)]

      [外链图片转存中…(img-MmVqpemT-1715020971657)]

      既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

      如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

      由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

    • 22
      点赞
    • 29
      收藏
      觉得还不错? 一键收藏
    • 0
      评论

    “相关推荐”对你有帮助么?

    • 非常没帮助
    • 没帮助
    • 一般
    • 有帮助
    • 非常有帮助
    提交
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值