在本实现的编译模块,我们将自己编写的编译模块来解析并输出未 render
函数
let template = `<template>Consumer: xxx</template>`
render() {
return h('div', {}, `Consumer: xxx`)
}
大概的编译流程是这样的:
- 用户编写的
template
字符串 - 通过
parser
转换为 AST 抽象语法树 - 将 AST 传递到
transform
模块,对 AST 进行处理 - 将处理好的 AST 传递到
codegen
最终输出render
一个 template
会涉及到三种类型:
<div>
hi, {{msg}}
</div>
element
:div
text
:hi
插值
:{{msg}}