前言
尤大大在2020年4月21日晚九点半线上直播介绍了Vue.js3.0Beta,在2020年9月18日晚11点半发布了Vue.js3.0第一个版本。新版本的出现是为了解决旧版本的问题,当然不可避免的也会带来新的问题。正如霍春阳前辈在《Vue.js设计与实现》一书中说的,框架设计里到处都体现了权衡的艺术。鉴于本人已经具备多年使用Vue2.x实战开发的经验,现在要以“渐进式”的方式去学习Vue3.x的相关知识,去了解Vue3.x给我们带来的便利和新的烦恼。截止目前,Vue3.x的版本已更新到3.3.4。
一、Vue3的6大亮点
Performance:性能更比Vue 2.0强。Tree shaking support:可以将无用模块“剪辑”,仅打包需要的。Composition API:组合API。Fragment, Teleport, Suspense:“碎片”,Teleport即Protal传送门,“悬念”。Better TypeScript support:更优秀的 Ts 支持。Custom Renderer API:暴露了自定义渲染API。
二、深入亮点
1.Performance
- 重写了虚拟
Dom的实现(且保证了兼容性,脱离模版的渲染需求旺盛)。 - 编译模板的优化。
- 更高效的组件初始化。
update性能提高 1.3~2 倍。SSR速度提高了 2~3 倍。
2.Tree shaking support(按需引入)
- 可以将无用模块“剪辑”,仅打包需要的(比如
v-model,<transition>,用不到就不会打包)。 - 一个简单“
HelloWorld”大小仅为:13.5kb- 11.75kb,仅
Composition API。
- 11.75kb,仅
- 包含运行时完整功能:22.5kb
- 拥有更多的功能,却比
Vue 2更迷你。
- 拥有更多的功能,却比
3.Composition API
- 可与现有的
Options API一起使用 - 灵活的逻辑组合与复用
vue 3的响应式模块可以和其他框架搭配使用
4.Fragment, Teleport, Suspense
-
Fragment
- 不再限于模板中的单个根节点
render函数也可以返回数组了,类似实现了React.Fragments的功能 。- '
Just works'
-
Teleport
- 以前称为
<Portal>,译作传送门。
- 以前称为
-
Suspense
- 可在嵌套层级中等待嵌套的异步依赖项
- 支持
async setup() - 支持异步组件
5.Better TypeScript support
Vue 3是用TypeScript编写的库,可以享受到自动的类型定义提示JavaScript和TypeScript中的 API 是相同的。-
- 事实上,代码也基本相同
- 支持
TSX class组件还会继续支持,但是需要引入vue-class-component@next,该模块目前还处在 alpha 阶段。
6.Custom Renderer API
- 正在进行
NativeScript Vue集成 - 用户可以尝试
WebGL自定义渲染器,与普通 Vue 应用程序一起使用(Vugel)。
三、遗留问题
- Docs & Migration Tools / Guides
- 文档更新。
- Router、Vuex
- 生态系统更新。
- CLI
- 脚手架更新。
- DevTools
- 浏览器插件更新。
- IDE插件更新。
- IE11 Compatibility build
- 浏览器兼容。
四、总结
Vue3.x的优势:性能更好、体积更小、更好的逻辑复用、更好的TS支持、提供更先进的组件。