猿创征文 |《深入浅出Vue.js》打卡Day4

本文深入探讨了模板编译的三个关键步骤:解析器将模板转化为AST,优化器标记静态节点以提升渲染效率,而代码生成器则将AST转换为渲染函数。通过这种方式,模板编译能够高效地生成和更新虚拟DOM,减少不必要的DOM操作。
摘要由CSDN通过智能技术生成

第8章 模板编译

模板编译 所介绍的内容是如何让虚拟DOM拿到vnode,下图给出了模板编译在整个渲染过程中的位置
在这里插入图片描述
模板编译的主要目标就是生成渲染函数,而渲染函数的作用是每次执行它,它就会使用当前最新的状态生成一份新的vnode,然后使用这个vnode进行渲染。

模板编译分三部分内容:

  • 将模板解析为AST——解析器
  • 遍历AST标记静态节点——优化器
  • 使用AST生成渲染函数——代码生成器
    在这里插入图片描述

解析器

解析器只实现一个功能,那就是将模板解析成AST。
在解析器内部,分成了很多小解析器,其中包括过滤器解析器、文本解析器和HTML解析器,然后通过一条主线将这些解析器组装在一起。
在这里插入图片描述

  • 过滤解析器的作用就是用来解析过滤器的;
  • 文本解析器的主要作用是用来解析带变量的文本;

例如:Hello{{name}} // name就是变量,而这样的文本叫做带变量的文本。如果不带变量的文本是一段纯文本,不需要使用文本解析器来解析

  • HTML解析器,它是解析器最核心的模块,它的作用就是解析模板

主线上做的事情就是监听HTML解析器。每当触发钩子函数时,就生成一个对应的AST节点。生成AST前,会根据类型使用不同的方式生成不同的AST。例如,如果是文本节点,就生成文本类型的AST。当HTML解析器把所有模板都解析完毕后,AST也就生成好了。

优化器

优化器的目标是遍历AST,检测出所有的静态子树(永远不会发生变化的DOM节点)并给其打标记。
当AST中的静态子树被打上标记后,每次重新渲染时,就不需要为打上标记的静态节点创建新的虚拟节点,而是直接克隆也存在的虚拟节点。除了首次渲染之外,后续不需要任何重新渲染操作。

代码生成器

代码生成器,它的作用是将AST转换成渲染函数中的内容,这个内容可以称为 “代码字符串”,这样的代码字符串最终导出到外界使用时,会将代码字符串放到函数里,这个函数叫做渲染函数。当渲染函数被导出到外界后,模板编译就任务就完成了。

渲染函数的作用就是创建vnode

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

*neverGiveUp*

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值