1. 编译
- 循环解析字符串,匹配标签起始符,用正则匹配出所有属性,然后入栈,生成该标签的
AST
节点,建立AST
父子关系 - 匹配标签内文本节点,解析文本字符串,生成执行表达式,生成文本
AST
,建立AST
父子关系 - 匹配标签结束符,进行出栈操作比对标签,重置参数
- 进行收尾,防止还有未出栈的标签,返回
AST
树的根节点
2. 优化
遍历AST
树,标记静态节点和非静态节点,静态节点则在更新时直接跳过
3. 生成代码
遍历AST
树,递归解析并生成对应AST
节点的执行代码,会包括该节点所有的data
,event
,directive
等一系列信息,最终生成整个组件的render
函数