vuejs源码阅读之优化器

这篇具有很好参考价值的文章主要介绍了vuejs源码阅读之优化器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

vuejs源码阅读之优化器,vue.js,javascript,ecmascript

前面讲过vuejs中解析器是把html模版解析成AST,而优化器的作用是在AST中找到静态子树并打上标记。

静态子树是指的那些在AST中永远不会发生变化的节点。

例如,一个纯文本节点就是静态子树,而带变量的文本节点就不是静态子树,因为他会随着变量的变化而变化。

标记静态子树有两点好处。

  • 每次重新渲染时,不需要为静态子树创建新节点
  • 在虚拟DOM中打补丁的过程可以跳过

重新渲染,不需要为静态子树创建新节点

前面介绍虚拟DOM时,我们说每次重新渲染都会使用最新的状态生成一份全新的VNode与旧的VNode进行对比。

而在生成VNode的过程中,如果发现一个节点被标记为静态子树,那么除了首次渲染会生成节点之外,在重新渲染时并不会生成新的子节点树,而是克隆已存在的静态子树。

在虚拟DOM中打补丁的过程可以被跳过

之前说过打补丁的过程,需要对比两个节点并更新DOM。如果两个节点都是静态子树,就不需要进行对比与更新DOM的操作,直接跳过。

因为静态子树是不可变的,不需要对比就知道它不可能发生变化。此外,直接跳过后续的各种对比可以节省javascript的运算成本。

实现步骤

第1步:在AST中找出所有的静态节点并打上标记,
第2步:在AST中找出所有静态根节点并打上标记。文章来源地址https://www.toymoban.com/news/detail-616384.html

到了这里,关于vuejs源码阅读之优化器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • backend.js:748 An error occurred in hook ‘getInspectorState‘ registered by plugin ‘org.vuejs.vue2-in

    问题 vue项目控制台操报错 backend.js:748 An error occurred in hook \\\'getInspectorState\\\' registered by plugin \\\'org.vuejs.vue2-internal\\\' with payload: 出现这个问题是你的Vue.js devtools版本搞错了 解决 重新下载插件 旧版本下载 确保禁用任何其他版本的 Vue 开发工具。一次只能启用一个版本。

    2024年02月16日
    浏览(42)
  • 3分钟搞懂:JavaScript 和 ECMAScript

    ECMAScript 是 JavaScript 语言的 国际标准 ,JavaScript 是 ECMAScript 的 一种实现 (Adobe ActionScript 和 JScript 同样实现了 ECMAScript)。 ECMAScript 是欧洲计算机制造商协会 ECMA(European Computer Manufacturers Association)发布的浏览器脚本语言标准。它是 262 号标准文件,又叫 ECMA-262。 ECMAScript 定义

    2023年04月22日
    浏览(47)
  • 前端学习笔记:JavaScript基础语法(ECMAScript)

    此博客参考b站:【黑马程序员前端JavaScript入门到精通全套视频教程,javascript核心进阶ES6语法、API、js高级等基础知识和实战教程】https://www.bilibili.com/video/BV1Y84y1L7Nn?p=76vd_source=06e5549bf018e111f4275c259292d0da 这份笔记适用于已经学过一门编程语言(最好是C语言)的同学,如果你没有

    2024年02月16日
    浏览(47)
  • 深入理解 ECMAScript modules:提升你的 JavaScript 技能(六)

    🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_ CSDN 博客专家、23年度博客之星前端领域TOP1 🕠 牛客 高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课 签约作者、上架课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你

    2024年02月21日
    浏览(52)
  • 深入理解 ECMAScript modules:提升你的 JavaScript 技能(一)

    🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_ CSDN 博客专家、23年度博客之星前端领域TOP1 🕠 牛客 高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课 签约作者、上架课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你

    2024年02月20日
    浏览(44)
  • 前端导出文件 | fileSaver.js源码阅读

    了解fileSaver.js核心实现 自己动手实现简易导出功能 在Vue中如何使用文件 1、fileSave.js库地址:https://github.com/eligrey/FileSaver.js 2、src目录结构 3、在浏览器打开test.html,点击下载按钮,进行代码调试 进入saveAs函数后可按下一步进行调试,查看代码执行过程。 fileSaver.js核心代码实

    2024年02月05日
    浏览(50)
  • BCSP-玄子前端开发之JavaScript+jQuery入门CH07_ECMAScript 6基础

    4.7.1 ECMAScript 6 简介 ECMAScript 6.0(简称 ES6) 是JavaScript语言的下一代标准 正式发布于2015年6月 目标 使JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言 版本升级 ECMAScript 2015 ECMAScript 2016 ECMAScript 2017 ECMAScript和JavaScript 的关系 前者是后者的规格,后者是前者的

    2023年04月27日
    浏览(54)
  • vuejs源码之虚拟dom中的vnode

    在虚拟dom中,vnode是比较重要的。 在vuejs中,有一个Vnode类 使用它可以实例不同类型的vnode实例,而不同类型的vnode实例各自表示不同类型的dom元素。 例如dom元素有文本节点,元素节点,注释节点等。 这是vnode的构造函数。他其实是一个js节点描述对象。描述了怎么样去创建真

    2024年02月16日
    浏览(41)
  • Vue.js设计与实现阅读-3

    前言 前面一章我们了解了,开发体验是衡量一个框架的重要指标之一。提供友好的警告信息至关重要,但是越详细的警告信息,意味着框架体积越大。为了解决这一问题,可以利用 Tree-Shaking 机制,配合构建工具预定义常量,例如 __ DEV __ ,从而实现只在开发环境中打印警告

    2024年02月02日
    浏览(31)
  • Vue.js设计与实现阅读-2

    上一篇我们了解到了 命令式和声明式的区别,前者关注过程,后者关注结果 了解了虚拟dom存在的意义,使找出差异这个过程消耗的性能最小化 学习了进行时、编译时、编译时+进行时的特点,初步知道了vue3是采用编译时+进行时的框架 2、1 提升用户体验 提供友好的警告信息

    2024年02月02日
    浏览(71)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包