简单说,
Vue
的编译过程就是将template
转化为render
函数的过程。会经历以下阶段:
- 生成
AST
树 - 优化
codegen
- 首先解析模版,生成AST语法树(一种用
JavaScript
对象的形式来描述整个模板)。 使用大量的正则表达式对模板进行解析,遇到标签、文本的时候都会执行对应的钩子进行相关处理。 Vue
的数据是响应式的,但其实模板中并不是所有的数据都是响应式的。有一些数据首次渲染后就不会再变化,对应的DOM
也不会变化。那么优化过程就是深度遍历AST
树,按照相关条件对树节点进行标记。这些被标记的节点(静态节点)我们就可以跳过对它们的比对,对运行时的模板起到很大的优化作用。- 编译的最后一步是将优化后的
AST
树转换为可执行的代码