VUE2.0 模板编译原理(一):解析器

vue的template里可以填充变量、表达式、指令,这些在HTML没有的功能就是靠模板编译实现的。模板编译的作用就是将模板转换为渲染函数,渲染函数执行的时候都会生成当前最新的vnode进行页面渲染。
模板--[输入]-->模板编译--[输出]-->渲染函数
这个过程分为三个步骤:
1、解析器:模板解析成AST(抽象语法树);
2、优化器:遍历AST标记静态节点,这样在虚拟DOM更新节点时避免重新渲染静态节点;
3、代码生成器:使用AST生成render函数。

一、解析器

AST与vnode类似,都是通过js对象来表示节点,比如parent记录父节点,type表示节点类型,children记录子节点这样,所以AST就是一个用js对象描述的节点树。

解析器又分成过滤器解析器、文本解析器(解析类似Hello { { name }}这种带变量的文本)和HTML解析器(核心,解析模板),这些解析器通过主线被组装在一起。

1、解析器内部运行原理:

主要的就是HTML解析器,在解析的过程中触发各种钩子函数:

  • 开始标签钩子函数start(tag:标签名, attrs:

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值