vue3相比vue2效率提升在哪些方面?

Vue3对比Vue2在性能上有显著提升,主要体现在静态节点提升、预字符串化、缓存事件处理函数和Block Tree优化等方面。静态提升包括元素节点和静态属性的提升,预字符串化针对静态节点进行优化,特别是在SSR场景下。Vue3还缓存事件处理函数以减少计算,而Block Tree优化则避免了不必要的静态节点对比,通过PatchFlag标记简化新旧树的对比过程。
摘要由CSDN通过智能技术生成

vue3相比vue2效率提升在哪些方面?


静态提升

相比vue2,vue3对以下静态节点进行提升:

  1. 元素节点
  2. 没有绑定的动态内容
//vue2的静态节点
render(h){
   
	//直接render
	h('h1',null,'this is h1')
}

//vue3的静态节点
const hoisted = createdVNode('h1',null,'this is h1')
render(){
   
	//直接使用被提升的静态节点
}

通过打开vue3工程,可以看到起运行代码中包含着hoisted标记的变量,/*@__PURE__*/则告诉打包工具该函数是非dead code代码,如图:
图片演示
同时我们通过测试也可以发现,vue3里手写vnode可以缩小到如下三个属性,测试发现缺少shapeFlag并不能生效。

render() {
   
	return {
   
		"type": "h1",
		"children": "this is h1",
 		"shapeFlag": 9,
	}
 }
 

vue2的vnode和vue3有所区别,主要是某些属性的表述上有所差异,具体用法其实是一样的。

除了静态节点的提升,静态属性也是可以被提升的。

<div 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值