浅谈vue3 和 vue2的区别

devtools/2024/11/24 3:59:34/
  • vue3中不再导出一个Vue的构造函数,而是具名导出很多数据
  • 不给用户提供Vue构造函数来创建vue实例,使用一个具名导出的createApp,然后传入一个根组件来创建,然后返回一个类似于vue实例的对象,调用mount方法来实现挂载
  • 组件中兼容vue2的写法,只不过函数中的this指向不再是vue的组件实例,而是一个proxy代理对象。
  • vue3中同时增加了composition api的编程思想。
  • vue3中的组件可以不再单根
  • vite构建工具(同时也是一个脚手架)伴随着vue3的出现,与webpack相比,组件越多,vite的打包效率越快
    • 使用vite,引用文件时,除了.js文件不需要加后缀名,其他文件都需要添加上后缀名,否则vite无法识别
  • vue3 在编译时效率上的提升
    • 静态提升:vue3会识别组件中的一些没有绑定动态内容的静态节点,然后将这些节点编译过后,使用变量保存起来,之后再去重新生成虚拟dom时,不再创建,而是直接拿到之前保存的已经生成好的虚拟dom来使用;属性是静态时,也会将属性用变量保存起来,之后重新生成虚拟dom时会重用该变量
    • 预字符串化:当编译器遇到大量连续的静态内容,会直接将其编译为一个普通字符串节点
    const _hoisted_2 = _createStaticVNode("<div class=\"logo\"><h1>logo</h1></div><ul 
    class=\"nav\"><li><a href=\"\">menu</a></li><li><a href=\"\">menu</a></li><li><a 
    href=\"\">menu</a></li><li><a href=\"\">menu</a></li><li><a href=\"\">menu</a></li> 
    </ul>")
    
    • 缓存事件处理函数:vue3中的render函数中传入了缓存对象_catch,这里面缓存了事件处理函数,这样在每次重新渲染时就不会重新生成一个一模一样的函数,减少内存开销
    • block tree:在vue3中,对比虚拟dom之前,会根节点中记录有哪些节点时动态节点,在对比时会直接对比记录的动态的节点,不会再去对比组件中的静态节点(如果虚拟dom树不稳定,则会进行其他处理)
    • patchFlag:在vue2中比对节点时,不知道那些发生了变化,只会一个个的对比,而在vue3中,记录了节点中哪些是动态的,真正需要比对的,所以在对比时,直接对比真正有可能发生变化的部分。
      未完待续...
最后编辑于:2024-11-11 21:12:08


喜欢的朋友记得点赞、收藏、关注哦!!!


http://www.ppmy.cn/devtools/136448.html

相关文章

使用 vscode 调试 nodejs 代码

继前一篇&#xff1a;使用 cmake.js 在 Windows 上编译 js 代码 我们已经能在 vscode 上成功的编译出 js 代码&#xff0c;那我们该如何断点调试 js 代码以及 js 引用的 C 库源码呢 首先要先以 Debug 模式编译 js 代码 cmake-js clean cmake-js compile -D找到 debug 生成的 pd…

OpenCV与AI深度学习|16个含源码和数据集的计算机视觉实战项目(建议收藏!)

本文来源公众号“OpenCV与AI深度学习”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;分享&#xff5c;16个含源码和数据集的计算机视觉实战项目 本文将分享16个含源码和数据集的计算机视觉实战项目。具体包括&#xff1a; 1. 人…

杰发科技AC7801——ADC定时器触发的简单使用

使用场景 在需要多次采样结果的情况下&#xff0c;比如1s需要10w次的采样结果&#xff0c;可以考虑使用定时器触发采样&#xff0c;定时器设置多少的时间就会多久采样转换一次。 再加上使用dma&#xff0c;采样的结果直接放在dma的数组里面。 实现了自动采样&#xff0c;自动…

移动语义和拷贝语义的区别以及智能指针

移动语义和拷贝语义的区别 一、概念本质: 拷贝语义 拷贝语义是基于对象的复制操作。当一个对象被拷贝时&#xff0c;会创建一个新的对象&#xff0c;这个新对象的内容是原始对象的完全副本&#xff0c;这意味着新对象和原始对象在内存中有独立的存储空间&#xff0c;并且它们…

DICOM图像知识:解析如何在DICOM图像中实现多层覆盖层的显示的方法

目录 1. 覆盖层&#xff08;Overlay&#xff09;基础 1.1 覆盖层的定义 1.2 DICOM中的覆盖层表示 2. 解析和处理思路 2.1 提取覆盖层数据 2.2 将覆盖层叠加到图像上 3. 实现示例 4. 注意事项 1. 覆盖层&#xff08;Overlay&#xff09;基础 1.1 覆盖层的定义 覆盖层是…

【LeetCode热题100】栈

这道题一共记录了关于栈的5道题目&#xff1a;删除字符串中所有相邻重复项、比较含退格的字符串、基本计算器II、字符串解码、验证栈序列。 class Solution { public:string removeDuplicates(string s) {string ret;for(auto c : s){if(ret.size() 0 || c ! ret.back()) ret …

easyExcel - 导出合并单元格

目录 前言一、情景介绍二、问题分析三、代码实现四、测试代码 前言 Java-easyExcel入门教程&#xff1a;https://blog.csdn.net/xhmico/article/details/134714025 之前有介绍过如何使用 easyExcel&#xff0c;以及写了两个入门的 demo &#xff0c;这两个 demo 能应付在开发…

数据结构-7.Java. 对象的比较

本篇博客给大家带来的是java对象的比较的知识点, 其中包括 用户自定义类型比较, PriorityQueue的比较方式, 三种比较方法...... 文章专栏: Java-数据结构 若有问题 评论区见 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 .…