Vue 中含有模板编译的功能,它的主要作用是将用户编写的 template 编译为 js 中可执行的 render 函数
Vue 3 中的模板转化,做了更多的优化操作,Vue 2 仅仅时标记了静态节点
这个过程主要分析出哪些是静态节点,给其打一个标记,为后续更新渲染可以直接跳过静态节点做优化
深度遍历AST,查看每个子树的节点元素是否为静态节点或者静态节点根。如果为静态节点,他们生成的DOM永远不会改变,这对运行时模板更新起到了极大的优化作用。
generate将 ast抽象语法树编译成 render字符串并将静态部分放到 staticRenderFns 中,最后通过 new Function(`` render ``)
生成render函数。
parse()
方法将 template
转化为 ast
(抽象语法树)optimize()
方法对转化为的 ast
,进行优化,找出静态节点(该静态节点生成的 dom
树永不改变,对运行时模板更新起到了极大的优化作用)generate()
将 ast
编译成 render
字符串,通过 new Function(render)
,生成 render
函数