-
vue中有些地方用普通函数定义类比如
Vue然后再用 prototype去添加实例方法,有些地方用class定义类。这里vue非常灵活的利用了js的特点,在需要分模块添加实例方法时,就适合用前者。 -
render函数体现了函数式编程思想。把产生Vnode的方法放在函数里,等到需要的时候, 再调用render函数,返回一个真正的数据VNode -
core/instance/lifecycle.js中Vue.prototype._update方法会调用setActiveInstance方法,这个方法返回了一个复原activeInstance的方法,patch执行完后,直接调用复原方法恢复原理的activeInstance
export function setActiveInstance(vm: Component) {
const prevActiveInstance = activeInstance
activeInstance = vm
return () => {
activeInstance = prevActiveInstance
}
}
-
生成VNode节点时,会合并相邻的文本节点,减少节点数
-
初始化渲染watcher时,传入的getter函数,其实是updateComponent,并不会触发所有vm.data上的属性被访问。只有渲染用到的属性才会被访问,继而触发属性的依赖收集。 用户自定义的watcher会单独触发getter进而触发依赖收集。










网友评论