Vue 3 模板编译器核心流程
Vue 3 模板编译主要由三大阶段构成:
Template 字符串
│
▼ (Parse / 有限状态机 FSM)
Template AST
│
▼ (Transform / 插件管道)
JavaScript AST
│
▼ (Codegen / 代码生成)
Render Function Code1. Parse 与有限状态机 (FSM)
词法分析器读取字符流输入,依据当前字符特征在不同状态之间转移:
- 遇到
<:进入标签开始状态 - 遇到
</:进入标签结束状态 - 遇到普通字符:进入文本解析状态
- 遇到
{{:进入插值解析状态
export function baseCompile(template: string) {
const ast = baseParse(template);
transform(
ast,
Object.assign({
nodeTransforms: [transformExpression, transformElement, transformText],
})
);
return generate(ast);
}