1、原理
模板编译分三部分:
- 将模板解析为AST
- 遍历AST标记静态节点
- 使用AST生成渲染函数
三部分内容在模板编译中分别抽象出三个模块来实现各自的功能,分别是
- 解析器
- 优化器
- 代码生成器
模板编译的整体流程为:
2、模板选择
有el, template, render情况下
当有el属性,直接获取el作为根节点
- template为字符串时,模板直接使用
- template不是字符串,有nodeType属性,使用template的innerHTML作为模板
- 没有template属性时,模板使用el的outerHTML
当有template和render时,优先使用render。