文章目录
- 前言
- 一、性能比Vue2快1.2~2倍
- 1.1 diff算法优化
- 1.2 事件侦听缓存
- 1.3 减少创建组件实例的开销
- 二、 按需编译,体积比Vue2更小
- 三、 Compostion API
- 四、 支持TS
- 五、 自定义渲染API
- 六、更先进的组件
- 七、 更快的开发体验
前言
VUE是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。
一、性能比Vue2快1.2~2倍
1.1 diff算法优化
在vue2虚拟dom是全量渲染,在vue3静态属性提升只会被创建一次。
diff算法
就是进行虚拟节点对比,并返回一个patch对象,用来存储两个节点不同的地方,最后用patch记录的消息去局部更新Dom
1.2 事件侦听缓存
在vue2事件监听是动态属性
,在vue3事件监听是静态属性
。
1.3 减少创建组件实例的开销
在vue2每创建一个实例,在this上要暴露data
、props
、computed
这些,都是靠Object.defineProperty
去定义的。
在vue3基于Proxy
。
Object.defineProperty
直接在一个对象上定义一个新属性,或者修改一个已经存在的属性。
二、 按需编译,体积比Vue2更小
在vue3利用ES6 模块系统import/export
,按需编译。
Tree Shaking
指的就是当我引入一个模块的时候,我不引入这个模块的所有代码,我只引入我需要的代码。
三、 Compostion API
在vue2是组合API,在vue3是注入API。
在vue2的组件内,使用的是Option API风格(
data/methods/mounted
)来组织的代码。在vue3中,使用setup函数。
四、 支持TS
在vue2中组件写法和ts的组件差别较大。在vue3中,量身打造了defineComponent函数,使组件在ts下,更好的利用参数类型推断 。
五、 自定义渲染API
在vue2渲染到不同平台不太友好,在vue3重写createApp可以解决移动端跨平台、小程序渲染问题。
六、更先进的组件
vue3根节点不是必要,无需创建。节点数比vue2少。
七、 更快的开发体验
在vue2使用webpack
作为开发构建工具,项目越大,启动时间越长,热重载延迟越久。
在vue3使用vite
作为开发构建工具,启动秒开,热重载也很快。