Vue 2 和 Vue 3 的 6 个不同点
1、响应式系统
Vue 2 是基于 defineProperty
拦截具体某个属性,Vue 3 基于的 Proxy
才是真正的“代理”。
defineProperty
对不存在的属性无法拦截,所以 Vue 2 中所有数据必须要在 data 里声明。
2、自定义渲染器
Vue 2 所有模块是混杂在一起的,不利于扩展。
Vue 3 将响应式、运行时的相关功能都拆成了独立模块,渲染的逻辑也拆成了 “平台无关渲染逻辑” + “特定平台渲染 API”(比如 Web 开发就加入浏览器 API)
3、使用TypeScript 重构
ts 的好处就不多说了
4、Composition API
API 都通过 import 引入,对 tress-shaking 友好
通过将业务逻辑聚合到 setup
函数中,增强了代码的复用性,也减轻了编码时反复上下横跳的问题。
5、新组件
Fragment 允许 Vue 3 组件有多个根节点,清除了很多无用的占位 div。
Teleport 允许组件渲染在别的元素内,对弹窗组件的开发特别有用。
Suspense 异步组件,在异步请求没返回时可以方便的加入 loading 状态。
6、Vite
Vite 是新一代工程化工具,对标 webpack。
相比 webpack,vite 去掉了预打包的过程