iis服务器助手广告
返回顶部
首页 > 资讯 > 前端开发 > 其他 >vue学习之聊聊模板编译原理
  • 218
分享到

vue学习之聊聊模板编译原理

模板编译Vue 2023-05-14 22:05:11 218人浏览 独家记忆
摘要

**在AST中找出所有静态根节点并打上标记 ** 静态根节点:子节点全是静态节点的节点 使用递归从上向下寻找,在寻找的过程中遇见的第一个静态节点就为静态根节点,同时不继续往下找。如果一个静态根节点的子节点只有一个文本节点或没有子节点,那么不

  • **在AST中找出所有静态根节点并打上标记 **
    静态根节点:子节点全是静态节点的节点
    使用递归从上向下寻找,在寻找的过程中遇见的第一个静态节点就为静态根节点,同时不继续往下找。

如果一个静态根节点的子节点只有一个文本节点或没有子节点,那么不会标记成静态根节点,即使他们是,因为优化成本大于收益

怎么判断是否静态节点?
在将模板字符串解析成AST的时候,会根据不同的文本类型设置一个 type

type说明是否时静态节点
1元素节点进行一些排除
2带遍历的动态文本节点不是
3不带遍历的纯文本节点

4.代码生成器-将AST转化成渲染函数中的代码字符串

代码生成器的作用:将AST转化成渲染函数中的代码字符串

<div>
  <p>{{name}}</p>
</div>
//生成的render渲染函数
{
  render: `with(this){return _c('div',[_c('p',[_v(_s(name))])])}`
}
//格式化后
with(this){
  return _c(
    'div',
    [
      _c(
        'p',
        [
          _v(_s(name))
        ]
      )
    ]
  )
}

生成代码字符串是一个递归的过程,从顶向下依次处理每一个AST节点。
节点有三种类型,分别对应三种不同的创建方法与别名。

类型创建方法别名
元素节点createElement_c
文本节点createTextVnode_v
注释节点createEmptyVNode_e

渲染函数可以生成VNode的原因:渲染函数其实是执行了createElement,而createElement可以创建VNode。

代码字符串的拼接过程

递归AST来生成字符串,最先生成根节点,然后在子节点字符串生成后,将其拼接在根节点的参数中,子节点的子节点拼接在子节点的参数中,一层层拼接。

学习视频分享:Vuejs入门教程编程基础视频)

以上就是vue学习之聊聊模板编译原理的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: vue学习之聊聊模板编译原理

本文链接: https://www.lsjlt.com/news/207093.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue学习之聊聊模板编译原理
    **在AST中找出所有静态根节点并打上标记 ** 静态根节点:子节点全是静态节点的节点 使用递归从上向下寻找,在寻找的过程中遇见的第一个静态节点就为静态根节点,同时不继续往下找。如果一个静态根节点的子节点只有一个文本节点或没有子节点,那么不...
    99+
    2023-05-14
    模板编译 Vue
  • Node学习之聊聊模块系统
    Node.js 中存在 4 类模块(原生模块和3种文件模块) 例:var http = require("http");Node.js 中自带了一个叫做 http 的模块,我们在我们的代码中请求它并把返回值赋给一个本地变...
    99+
    2023-05-14
    node.js模块
  • Node学习之聊聊Cookie-Session登录验证的工作原理
    为什么不单独使用Cookie?Cookie是存放在浏览器中的,可以在浏览器中打开控制台,选择应用,找到存储中的Cookie进行查看:当客户端向服务端发送网络请求时浏览器会自动将Cookie添加到请求头中,这样服务端就能获取这个Cookie,...
    99+
    2023-05-14
    Node.js node
  • 详细聊聊Vue中的MVVM模式原理
    目录1. MVVM模式2. Vue响应式3. Vue监听对象3.1 监听普通对象3.2 监听复杂对象(深度监听)4. Vue监听数组5. 使用 Object.defineProper...
    99+
    2023-03-03
    vue.js mvvm vue.js教程 vue mvvm模式
  • vue模板编译的原理是什么
    这篇文章主要介绍了vue模板编译的原理是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue模板编译的原理是什么文章都会有所收获,下面我们一起来看看吧。vue提供了模板语法,允许我们声明式地描述状态和DOM...
    99+
    2023-07-05
  • Angular学习之聊聊Http ( 错误处理 / 请求拦截 )
    本篇文章带大家继续angular的学习,简单了解一下Angular中的Http处理,介绍一下错误处理和请求拦截,希望对大家有所帮助!基本使用用 Angular 提供的 HttpClient 可以很轻松的实现 API 接口的访问。【相关教程推...
    99+
    2023-05-14
    Angular.js 前端
  • springboot学习之Thymeleaf模板引擎及原理介绍
    目录模板引擎什么是模板引擎?模板引擎的原理引入ThymeleafThymeleaf分析Thymeleaf 语法学习模板引擎 springboot我们目前是以jar包的形式打包,实际上...
    99+
    2024-04-02
  • python编程webpy框架模板之def with学习
    目录一:模板的理解二:简单模板三:def with四:注意一:模板的理解 模板是将一个事物的结构规律予以固定化、标准化的成果。 例如:网页的组成需要是html,head,body,你...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作