Vue 源码 模板编译总结

本文深入探讨Vue.js的模板编译过程,包括compileToFunctions、compile和baseCompile函数的作用。compileToFunctions负责从缓存加载或编译render函数,compile则进行选项合并与baseCompile的调用。baseCompile核心任务是将模板转化为AST树,优化并生成JS代码。最终,生成的函数被挂载到Vue实例上,提升应用性能。
摘要由CSDN通过智能技术生成

一、compileToFunctions(template,...)

模板编译的入口函数,他的作用是先从缓存中加载编译好的render函数,如果缓存中没有找到加载编译好的render函数,就去调用compile(template,options)去编译

二、compile(template,options)

他的作用是第一个是合并options合并选项然后调用baseCompile(template.trim(),finalOptions)编译模板,compile函数的核心是合并选项真正进行处理的是baseCompile这个函数

三、baseCompile(template.trim(),finalOptions)

这个函数是接受了模板和合并后的所有选项完成了模板编译核心的三件事情,第一件 parse() 是把template转换成AST tree也就是抽象语法树,然后第二件事情optimize()用来优化抽象语法树,标记AST tree中的sub trees(标记抽象语法树中的静态根节点),检测到静态子树,设置为静态,不需要在每次重新渲染的时候重新生成节点 ,在patch的过程中会跳过静态子树。第三件事情generate() 是吧经过优化的AST tree生成字符串的js创建代码。当compile执行完毕后会回到编译的入口函数compileToFunctions(template,...)

四、compileToFunctions(template,...)

他的里面会把生成的字符串js代码转换成函数的形式,调用createFunction,最后当render和staticRenderFns初始化完毕后,会挂载到Vue实例上的options选项上

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值