VUE2.0 模板编译原理(二):优化器

本文介绍了Vue2.0模板编译的优化器部分,主要关注如何找出并标记静态节点和静态根节点。静态节点在后续渲染中会被复用,减少DOM操作;静态根节点的标记有助于跳过不必要的比较,提升性能。优化主要包括两步:一是遍历AST标记所有静态节点,二是标记静态根节点。这一过程在src/compiler/optimizer.js中实现。
摘要由CSDN通过智能技术生成

接上一篇内容: VUE2.0 模板编译原理(一):解析器

二、优化器

优化器的作用是在AST中找到静态子树并打上标记,即那些永远不会发生变化的节点,例如纯文本节点。

打标记的作用:

  • 在生成VNode的过程中,除了首次渲染,每次重新渲染,不需要为静态子树创建新节点,会直接克隆已存在的静态子树;

  • 虚拟DOM的patch过程中可以跳过,因为没有比较的必要,它是不变的,节省js脚本运算成本。

实现的主要步骤:

  • 在AST中找到所有静态节点并标记;

  • 在AST中找到所有静态根节点并标记。

在AST中,static属性为true的就是静态节点,比如<p>啊哈哈哈</p>。

静态根节点意思是所有子节点是静态节点,父节点是动态的,那么自己就是静态根节点,staticRoot为true。

实现源码在src/compiler/optimizer.js文件中。

1、找出所有静态节点并标记

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值