vue2.0必会面试题

189 阅读4分钟

一、vue(2.0)必会的五道题!

vue常见指令?v-if与v-show区别?v-if与v-for不建议搭配使用?v-for中的key作用?组件中的data为什么必须是一个函数?

1、vue常见的指令有哪些?有什么作用?


  • v-if:根据表达式的值,动态地插入或删除元素;也可以控制元素显示与隐藏
  • v-show:根据表达式的值,控制元素的显示或隐藏。
  • v-for:循环遍历数组或对象,并渲染每个元素到页面中。
  • v-on:绑定事件监听器,当事件被触发时执行对应的方法。
  • v-bind:动态绑定属性。
  • v-model:在表单元素上创建双向数据绑定,以便实现数据的同步更新。
  • v-text:输出文本内容。
  • v-html:输出 HTML 内容,要注意安全性问题( 可能会导致 xss 攻击)。
  • v-cloak:解决页面闪烁的问题。

建议尝试着把每一个指令在案例中去使用,亲自体会每一个指令的效果;
尽量不要去死记硬背指令的作用,只有亲身体会后才能更好的记忆这些指令。


2、v-if与v-show的区别?


v-if 和 v-show 都是 Vue.js 提供的用于控制元素显示与隐藏的指令,但它们的使用场景和实现方式不同:

1. 使用场景不同:

  • v-if:当条件为真时才渲染对应的元素,当条件为假时则不渲染,这意味着该元素在 DOM 树中并不存在。
  • v-show:无论条件是真还是假,都会在 DOM 树中存在该元素,只是根据条件的值设置其 CSS 的 display 属性来控制其显示或隐藏。

2. 实现方式不同:

  • v-if:每当条件发生变化时,会进行条件判断来重新渲染对应的元素,因此对性能会产生一定的影响。
  • v-show:仅仅是通过修改元素的 CSS 属性来控制其显示或隐藏,因此对性能的影响较小。

如果需要频繁地切换某个元素的显示与隐藏,建议使用 v-show;
如果一个元素的显示与隐藏不需要频繁变化,而且可能需要进行大量计算,建议使用 v-if;


3、v-if为什么不建议与v-for搭配使用?


v-for 每次渲染都会重新创建 DOM,而 v-if 会频繁地去销毁和创建 DOM。当两个指令同时使用时,会增加DOM操作的次数从而可能会出现性能问题,影响页面的渲染速度和用户体验

我们可以将 v-if 放在父元素上,避免在每次循环中都重新创建 DOM。或者使用计算属性来筛选要显示的数据。


4、v-for中的key作用?


key 是一个用来辨识每个节点的唯一标识符,它的作用是帮助 Vue.js 更高效地更新虚拟 DOM

v-for 指令只会根据 key 的变化来判断是否需要对某个元素进行更新,如果两个元素的 key 相同,则它们被视为同一个元素,Vue.js 只会更新数据而不会对 DOM 进行重新渲染。

如果不为每个列表项设置 key,那么在更新列表时,Vue.js 将比较困惑,它会尝试复用现有的 DOM 元素,可能会导致一些错误的结果。因此,为每个列表项设置一个唯一的 key,可以确保 Vue.js 能够正确地更新 DOM。

在 v-for 中设置 key 也可以提升性能,因为它可以帮助 Vue.js 更快地查找要更新的元素,从而减少了比较元素的时间和资源。

在vue项目中使用v-for如果不绑定key值编译工具可能会报错,建议使用v-for时都给它绑定一个唯一的key


5、vue组件中的data为什么必须是一个函数?


组件中的 data 必须是一个函数,而不是一个对象。这是因为组件是可以被复用的,如果直接使用对象形式的 data,那么相同组件之间就共享了同一个数据源,会导致数据污染和共享问题

也就是说如果组件实例化时直接使用对象形式的 data,那么该组件与其他组件共享了同一份 data,一个组件对 data 的修改将会影响到其他所有组件。

使用函数形式的 data 时,每个组件都会有自己的 data,这样就避免了数据共享和污染的问题。

使用函数形式的 data,还可以保证每次渲染时都会获取最新的数据,哪怕是在组件中的数据发生了变化,也能及时地响应更新。

使用函数形式的 data,可以保证组件的独立性,并且能够更好地防止数据污染和共享问题。