面试题导读
01.谈谈你对 Vue 的理解
02.谈谈你对 spa 的理解
03.vue 为什么需要虚拟 DOM
04.谈一谈对 Vue 组件化的理解
05.既然 Vue 通过数据劫持可以精准探测数据变化,为什么还需要虚拟 DOM 进行 diff 检测差异?
06.请说一下你对响应式数据的理解
07.Vue 中如何检测数组变化
08.Vue 中如何进行依赖收集
09.Vue.set 方法是如何实现的
10.v-if 和 v-show 的优先级
- v-if 是“真实的”按条件渲染,因为它确保了在切换时,条件区块内的事件监听器和子组件都会被销毁与重建。
- v-if 也是惰性的:如果在初次渲染时条件值为 false,则不会做任何事。条件区块只有当条件首次变为 true 时才被渲染。
- 相比之下,v-show 简单许多,元素无论初始条件如何,始终会被渲染,只有 CSS display 属性会被切换。
- 总的来说,v-if 有更高的切换开销,而 v-show 有更高的初始渲染开销。因此,如果需要频繁切换,则使用 v-show 较好;
- 如果在运行时绑定条件很少改变,则 v-if 会更合适
https://cn.vuejs.org/guide/essentials/conditional
11.watch & computed
12.解释 ref 和 reactive 区别
13.watch 和 watchEffect 的区别
watch 和 watchEffect 都能响应式地执行有副作用的回调。它们之间的主要区别是追踪响应式依赖的方式:
watch 只追踪明确侦听的数据源。它不会追踪任何在回调中访问到的东西。另外,仅在数据源确实改变时才会触发回调。watch 会避免在发生副作用时追踪依赖,因此,我们能更加精确地控制回调函数的触发时机。
watchEffect,则会在副作用发生期间追踪依赖。它会在同步执行过程中,自动追踪所有能访问到的响应式属性。这更方便,而且代码往往更简洁,但有时其响应性依赖关系会不那么明确。
https://cn.vuejs.org/guide/essentials/watchers.html
14.如何将 template 转换 render 函数
15.new Vue()过程中做了些什么
16.Vue.observable 你有了解过吗?
17.v-if 和 v-for 哪个优先级更高
18.生命周期有哪些
19.diff 算法
20.请说明 Vue 中 key 的作用和原理,谈谈你对它的理解
21.Vue.use 是干什么的?
22.Vue.extend 方法的作用?
23.Vue 组件 data 为什么必须是个函数?
- vue 组件可能会有很多个实例,采用函数返回一个全新 data 形式,使每个实例对象的数据不会受到其他实例对象数据的污染