过程分析
Vue的模版编译过程主要如下:template->ast->render函数
。
Vue在模版编译中会执行compileToFunctions
将template
转化为render函数
。
// 将模版编译为render函数
const { render, staticRenderFns } = compileToFunctions(template, options, this)
1.调用parse方法将template转化为ast(抽象语法树)
const ast = parse(template.trim(), options)
parse的目标:
是把template转化为AST,它是一种用JavaScript对象形式来描述整个模版的语法结构。
解析过程:
利用正则表达式来解析模版,当解析到开始标签、闭合标签、文本的时候都会分别执行对应的回调函数,来达到构造AST树的目的。
AST元素节点总共三种类型:type为1表示普通元素、2为表达式、3为纯文本。
2.对静态节点做优化
optimize(ast, options)
这个过程主要分析出哪些是静态节点,给其打一个标记,为后续更新渲染可以直接跳过静态节点做优化。
深度遍历AST:
查看每个子树的节点元素是否为静态节点或者静态节点根。如果为静态节点,他们生成的DOM永远不会改变,这对运行时的模版更新起到了极大的优化作用。
3.生成代码
const code = generate(ast, options)
generate将ast抽象语法树编译成render字符串
并将静态部分放到staticRenderFns
中,最后通过new Function(render)
生成render函数。
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!