声明式
@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
什么是副作用函数?就是内部操作会影响外部变量的函数