美文网首页
Vue源码中的亮点

Vue源码中的亮点

作者: treeQQ | 来源:发表于2019-08-17 10:14 被阅读0次
  1. vue中有些地方用普通函数定义类比如Vue然后再用 prototype去添加实例方法,有些地方用class定义类。这里vue非常灵活的利用了js的特点,在需要分模块添加实例方法时,就适合用前者。

  2. render函数体现了函数式编程思想。把产生Vnode的方法放在函数里,等到需要的时候, 再调用render函数,返回一个真正的数据VNode

  3. core/instance/lifecycle.js中Vue.prototype._update方法会调用setActiveInstance方法,这个方法返回了一个复原activeInstance的方法,patch执行完后,直接调用复原方法恢复原理的activeInstance

export function setActiveInstance(vm: Component) {
  const prevActiveInstance = activeInstance
  activeInstance = vm
  return () => {
    activeInstance = prevActiveInstance
  }
}
  1. 生成VNode节点时,会合并相邻的文本节点,减少节点数

  2. 初始化渲染watcher时,传入的getter函数,其实是updateComponent,并不会触发所有vm.data上的属性被访问。只有渲染用到的属性才会被访问,继而触发属性的依赖收集。 用户自定义的watcher会单独触发getter进而触发依赖收集。

相关文章

网友评论

      本文标题:Vue源码中的亮点

      本文链接:https://www.haomeiwen.com/subject/tuyjjctx.html