当前位置: 首页 > news >正文

Vue template到render过程

Vue template到render过程

  • vue的模版编译过程主要如下:template -> ast -> render函数
  • (1)调用parse方法将template转化为ast(抽象语法树)
  • (2)对静态节点做优化
  • (3)生成代码

vue的模版编译过程主要如下:template -> ast -> render函数

vue 在模版编译版本的码中会执行 compileToFunctions 将template转化为render函数:

// 将模板编译为render函数
const { render, staticRenderFns } = compileToFunctions(template,options, this)

CompileToFunctions中的主要逻辑如下∶

(1)调用parse方法将template转化为ast(抽象语法树)

constast = parse(template.trim(), options)

parse的目标:把tamplate转换为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函数。

http://www.lryc.cn/news/313310.html

相关文章:

  • 【你也能从零基础学会网站开发】Web建站之HTML+CSS入门篇 CSS常用属性
  • Golang 写日志到文件
  • 数字孪生10个技术栈:数据处理的六步骤,以获得可靠数据。
  • 运维随录实战(5)之centos搭建jenkins
  • css clip-path polygon属性实现直角梯形
  • Manz高压清洗机S11-028GCH-High Quality Cleaner 操作使用说明492页
  • 图像处理与视觉感知---期末复习重点(2)
  • 【机器学习】三要素——数据、模型、算法
  • Spring框架Bean对象的五个作用域
  • IoT数据采集网关在企业应用中扮演着关键角色-天拓四方
  • 【动态规划】完全背包
  • 从零开始学习Diffusion Models: Sharon Zhou
  • 全天候购药系统(微信小程序+web后台管理)
  • L2-003 月饼(Java)
  • vue面试--101, 1vue3为啥比vue2好 2 vue3为什么使用proxy
  • 【sgPhotoPlayer】自定义组件:图片预览,支持点击放大、缩小、旋转图片
  • cefsharp(winForm)调用js脚本,js脚本调用c#方法
  • Tensorflow实现手写数字识别
  • 谈谈杭州某小公司面试的经历
  • 如何使用WinSCP结合Cpolar实现公网远程访问内网Linux服务器
  • 6. 互质
  • 微信小程序(五十一)页面背景(全屏)
  • MATLAB | MATLAB版玫瑰祝伟大女性节日快乐!!
  • LVS+Keepalived 高可用集群
  • Linux:kubernetes(k8s)探针ReadinessProbe的使用(9)
  • 专题一 - 双指针 - leetcode 1089. 复写零 - 简单难度
  • 深入浅出(二)MVVM
  • 2023年第三届中国高校大数据挑战赛(第二场)A题思路
  • 数据挖掘:
  • NDK,Jni