简版
-
性能更高了,主要得益于响应式的原理换成了 proxy,VNode diff 的算法进行了优化。
-
体积更小了,删除了一些没必要或不常用到的 API,例如 filter、EventBus 等;按需导入,能配合 Webpack 支持 Tree Shaking。
-
对 TS 支持更好啦,因为它本身源码就是用 TS 重写的。
-
Composition API(组合 API),相比较 Vue2 的 options api,对于开发大型项目更利于代码的复用和维护。
-
新特性,例如 Fragment、Teleport、Suspense 等。
一、Vue3 介绍
关于vue3
的重构背景,尤大是这样说的:
Vue 新版本的理念成型于 2018 年末,当时 Vue 2 的代码库已经有两岁半了。比起通用软件的生命周期来这好像也没那么久,但在这段时期,前端世界已经今昔非比了
在我们更新(和重写)Vue 的主要版本时,主要考虑两点因素:首先是新的 JavaScript 语言特性在主流浏览器中的受支持水平;其次是当前代码库中随时间推移而逐渐暴露出来的一些设计和架构问题」
简要就是:
- 利用新的语言特性(es6)
- 解决架构问题
vue3 带来的哪些变化
对于 vue 的高阶开发者
- 新的 RFC 机制让 Vue 新语法的讨论更加高效和透明
- Vue3 提供了自定义渲染器让开发跨端应用时更加得心应手。
- 全部的模块使用 TypeScript 重构,能够带来更好的可维护性。
- 响应式系统可以单独抽离使用。
对于 vue 的普通用户
- 工程化工具 Vite 带来了更丝滑的调试体验。
- Vue3 内部的优化(响应式系统基于 Proxy,静态标记,tree-shaking 等),使得性能更高,体积更小
- Composition API 组合语法带来了更好的组织代码的形式。
- 内置了新的 Fragment、Teleport 和 Suspense 等组件。
非兼容变更
Global API
- 全局
Vue API
已更改为使用应用程序实例 - 全局和内部
API
已经被重构为可tree-shakable
模板指令
- 组件上
v-model
用法已更改 <template v-for>
和 非v-for
节点上key
用法已更改- 在同一元素上使用的
v-if
和v-for
优先级已更改 v-bind="object"
现在排序敏感v-for
中的ref
不再注册ref
数组