代码生成器是模板编译地最后一步,它的作用是将AST转换成渲染函数中的内容,这个内容叫做代码字符串。代码字符串可以被包装在函数中执行,这个函数就是通常所说的渲染函数。
虚拟DOM中的_c,_v,_e,_s函数
_c是createElement的别名。createElement是虚拟DOM中所提供的方法,它的作用是创建虚拟节点,有三个参数,分别是标签名,一个包含模板相关属性的数据对象,子节点列表。渲染函数其实是执行了createElement,从而生成了vnode。
_v是createTextVNode,创建文本节点。
_e是createEmptyVNode,创建注释节点。
_s是toString。
总结
通过递归AST来生成字符串,最先生成根节点,然后在子节点字符串生成后,将其拼接在根节点的参数中,子节点的子节点拼接在子节点的参数中,一层一层的拼接,直到最后生成完整的字符串,最后将字符串拼在with中返回给调用者。with(this){return _c(...)}