vuejs设计与实现的阅读

声明式

@click=”toXXXX”

注重过程,内部实现了该事件

命令式

xxx.textContent = ‘xxx’

注重过程

声明式和命令式的对比,命令式性能更好,声明式是在方便开发,利于维护的情况下尽量去减少性能的损耗

虚拟DOM

紧跟着的是虚拟DOM

循环向数组push对象和循环向一个节点appendChild对比起来,明显前者效率更高,性能更好

如何让声明式的性能更加接近命令式呢,就需要最小化的寻找到二者之间对比的差异

提供一个render函数,将一个树形结构对象递归转换成真实DOM

缺少了一部分,我们只是将属性结构对象递归转换成真实DOM,缺少将真实DOM转换成树形结构的方法

因此complier函数设计出来

let dom =

节点

let obj = compiler(dom) //转换成树形结构对象

render(obj,document.body)//将转换后的树形结构渲染成真实DOM插入body中

tree-shaking

去除打包后项目中的无用代码,必须依赖于es module

什么是副作用函数?就是内部操作会影响外部变量的函数