Vue.js 源码剖析-响应式原理、虚拟 DOM、模板编译和组件

2022-04-17  本文已影响0人  A_走在冷风中

Vue.js 源码剖析-响应式原理、虚拟 DOM、模板编译和组件化

简答题

1、请简述 Vue 首次渲染的过程。

  1. new Vue() 创建 Vue 实例
  2. 调用 this._init() 方法
  1. 调用 vm.$mount()
  1. mountComponent()
  1. 调用 watcher.get()

2、请简述 Vue 响应式原理。

Vue2.x 中响应式原理的核心是通过 Object.defineProperty 来挟持 data 中的属性,在属性被访问时 调用 get 方法, 当属性被重新赋值时调用 set 方法来实现的具体实现如下:

  1. 遍历$data 中的所有属性,将其转化为 getter 和 setter 注入到 Vue 实例中
  2. 利用 Observer 循环遍历 data 中的每一个属性成员,当属性被访问时,调用 dep 中的 addSub 收集依赖,当属性值发生改变时就会调用 dep 中的 notify 发送通知,通知 watcher 更新视图
    (需要判断对象和数组,上面的方法适用于对象,数组只会将数组的值处理为响应式的,不会循环里面的属性)
  3. 调用 Compiler()对象处理插值表达式,在处理差值表达式的过程中会创建 Watcher 实例,添加 target 属性(Observer 中收集依赖只会收集含有 target 属性的成员,如果没有 target 属性,说明页面中没有引用,无需收集)

3、请简述虚拟 DOM 中 Key 的作用和好处。

4、请简述 Vue 中模板编译的过程。

上一篇下一篇

猜你喜欢

热点阅读