Vue3 比 Vue2 快的体现-第一部分
Vue3 比 Vue2 快的原因 首先体现在 Diff算法的优化上,
Vue2 中的 虚拟DOM对比采用全量对比策略,这样的话每次渲染也就把静态dom节点做对比了。在Vue3 中 Diff算法 优化了此项;
Vue3模板语法编译网站把相同的一段Vue代码片段放到Vue2 与 Vue3的编译结果对比便能看出端倪
Vue2如下
<div>
<p>HELLO WORLD</p>
<div>{{msg}}</div>
</div> // 编译后 function render() {
with(this) {
return _c('div', [_c('p', [_v("HELLO WORLD")]), _c('div', [_v(_s(msg))])])
}
}
Vue3如下
<div>
<p>HELLO WORLD</p>
<div>{{msg}}</div>
</div> // 编译后 import { createVNode as _createVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createBlock as _createBlock } from "vue" export function render(_ctx, _cache, $props, $setup, $data, $options) {
return (_openBlock(), _createBlock("div", null, [
_createVNode("p", null, "HELLO WORLD"),
_createVNode("div", null, _toDisplayString(_ctx.msg), 1 /* TEXT */)
]))
}
由此可见,在{{msg}}对应的节点,Vue3做了标记 1 /*TEXT*/ 部分,说明此处是变化的,以后对比只对比变化的部分就好了;
关于这个flag的取值如下
- 动态文本节点 1
- 动态CLASS 2
- 动态STYLE 4
- 动态属性PROPS 8
- 具有动态KEY 属性 FULL_PROPS 16
- 带有监听事件的节点 32
- ...
剩下的还有几个,在此就不一一列举了
Vue3 比 Vue2 快的体现-第一部分的更多相关文章
- 想知道Vue3与Vue2的区别?五千字教程助你快速上手Vue3!
从Vue3发布以来,我就一直对其非常感兴趣,就一直想着将其投入公司的生产中,但是开始考虑到很多不确定性就暂时对一些很小的功能进行一些尝试:慢慢的发现组合式Api的形式非常适合开发(个人感觉),尤其是V ...
- vue2升级vue3:vue2 vue-i18n 升级到vue3搭配VueI18n v9
项目从vue2 升级vue3,VueI18n需要做适当的调整.主要是Vue I18n v8.x 到Vue I18n v9 or later 的变化,其中初始化: 具体可以参看:https://vue- ...
- vue3和vue2的区别
一.Vue3介绍 Vue 新版本的理念成型于 2018 年末,当时 Vue 2 的代码库已经有两岁半了.比起通用软件的生命周期来这好像也没那么久,但在这段时期,前端世界已经今昔非比了 在更新(和重写) ...
- vue3与vue2的区别
全局属性 vue2 对于一些第三方插件,vue2中通常使用prototype原型来挂载到vue对象中 import Vue from 'vue' Vue.prototype.$http=Axiox V ...
- 第三十一篇:vue3和vue2的不同
好家伙 1.为什么会有vue3? Vue2和Vue3的区别 - 简书 (jianshu.com) 貌似是因为他的对手太优秀,所以他也必须进步 2.什么是api? 从文件操作开始谈API. 以C语言为例 ...
- vue3和vue2 的区别,vue3和vu2到底哪个好呢?
vue3 正式发布有两年多了,之前也做过一些学习和研究.vue3 发布后给某培训机构开发了一套vue3课程课件,自己也开源了一套基于vue3的后台管理系统(因为个人懒的原因,半年后才上传到gitHub ...
- 快学Scala第一部分
转载: 1.变量声明 val answer = 8 * 5 + 2; //常量 var counter = 0; //变量 //在必要的时候 ,可以指定类型 val greeting:Strin ...
- Vue3 相比 vue2
Vue3 使用Proxy替代了defineProperty. Proxy 相比于 defineProperty 的优势 Object.defineProperty() 的问题主要有三个: 不能监听数组 ...
- 快学Scala 第一课 (变量,类型,操作符)
Scala 用val定义常量,用var定义变量. 常量重新赋值就会报错. 变量没有问题. 注意:我们不需要给出值或者变量的类型,scala初始化表达式会自己推断出来.当然我们也可以指定类型. 多个值和 ...
- uniapp项目vue2升级vue3简单记录
看到好多开源项目都升级了vue3,看文章说vue3性能升级很多,而且组合式api很香,遂把最近开发的自助洗车app升级下,在此记录下出现的问题. uniapp升级vue3官方指南 我是先去vue官网看 ...
随机推荐
- yb课堂之用户注册登陆模块《六》
用户注册功能接口开发 注册接口开发 MD5加密工具类封装 UserMapper.xml <?xml version="1.0" encoding="UTF-8&qu ...
- Java-Spring JDBC初体验操作数据库
Spring JDBC * Spring框架对JDBC的简单封装 提供了一个JDBCTemplate对象简化JDBC的开发 步骤 导入jar包 创建JDBCTemplate对象,依赖于数据源DataS ...
- C# 实现Eval(字符串表达式)的三种方法
一.背景 假如给定一个字符串表达式"-12 * ( - 2.2 + 7.7 ) - 44 * 2",让你计算结果,熟悉JavaScript的都知道有个Eval函数可以直接进行计算, ...
- Java学习_重置版一:Java语言基础之数据和标识符等
第一:关键字 (1)被Java语言赋予特定含义的单词 (2)特点:全部小写. (3)注意事项: A:goto和const作为保留字存在. B:类似于Notepad++这 ...
- Python 实时获取任务请求对应的Nginx日志
需求描述 项目需求测试过程中,需要向Nginx服务器发送一些用例请求,然后查看对应的Nginx日志,判断是否存在特征内容,来判断任务是否执行成功.为了提升效率,需要将这一过程实现自动化. 实践环境 P ...
- dcoker file
dockerfile是来构建镜像文件 [root@docker docker-test-volume]# pwd /home/docker-test-volume vi ./dockerfile 通过 ...
- 在Ubuntu 18.04 Desktop图形中配置静态和动态IP
在Ubuntu 18.04 图形界面中配置静态和动态IP 设置静态ip 设置为dhcp动态获取ip
- 10、Git之国内项目托管平台(Gitee码云)
10.1.简介 众所周知,GitHub 服务器在国外,如果网络不好的话,严重影响使用体验,甚至会出现登录不上的情况. 针对这个情况,可以使用国内的项目托管平台-- Gitee 码云,来替代 Githu ...
- 【转载】人工智能CAE仿真分析技术
原文: https://cloud.tencent.com/developer/news/628731 AI与CAE相结合 CAE的本质是对复杂工程问题通过合理简化建立数学模型,并根据输入求得输出.深 ...
- Ubuntu18.04 server 双网卡,一个设置为静态IP, 一个设置为动态IP
操作目的如题: 修改网络配置文件: sudo vim /etc/netplan/50-cloud-init.yaml 修改内容如下: # This file is generated from inf ...