【Vue2.x 源码学习】第十七篇 - 生成 render 函数 - 函数生成
一,前言
上篇,主要介绍了生成 render 函数 - 代码拼接,主要涉及一下几个点:
render 函数的代码拼接:generate(ast)
处理属性:genProps(ast.attrs)
处理属性中的样式
递归深层处理儿子:genChildren
本篇,生成 render 函数 - 函数生成
二,包装 code 生成 render 函数
1,render 函数对比
对比 vue2.0 模板生成的 render 函数:
上篇,完成了 return 内部的代码拼接工作,即 render 函数中 with 内部的代码拼接已经完成
距离真正的 render 函数,还差两步:
1,包装 with
2,包装成为 Function
2,包装 with 并生成 render 函数
复制代码
将生成的 render 函数保存到 options 选项:
复制代码
测试 render 函数生成:
3,生成 render 函数的大致流程:
从 html 模板到生成 render 函数的大致流程:
html 模板编译称为 ast 语法树;
ast 语法树生成并拼接 code
使用 with 对生成的 code 进行一次包装
将包装后的完整 code 字符串,通过 new Function 输出为 render 函数
TODO: 详细说明模板引擎的实现原理:new Function + with
三,结尾
又成功水了一篇,还剩 4 篇
本篇,生成 render 函数 - 函数生成,主要做了以下两件事
使用 with 对生成的 code 进行一次包装
将包装后的完整 code 字符串,通过 new Function 输出为 render 函数
下一篇,根据 render 函数,生成虚拟节点
评论