官方地址:vue3js.cn/docs/zh/
源码下载地址:github.com/vuejs/vue-n…
vue3的设计初衷:increment.com/frontend/ma…
vue3模板编译:vue-next-template-explorer.netlify.app/
vue3新特性:
性能提升:
1、proxy响应式
响应式原理由Object.defineProperty改为基于ES6的Proxy
优点:能规避Object.defineProperty的问题
- 深度监听:性能更好--不会递归到底而是在get到这个层级才会去递归
- 可监听数组变化
- 可监听新增、删除属性 缺点:
- 无法兼容所有浏览器,并无法polyfill
2、patchFlag静态标记
- 编译模板时给动态节点做标记
- diff算法是只会对比标记的节点
3、hoistStatic静态提升
- 将静态节点的定义,提升到父作用域,缓存起来
- 多个相邻的静态节点会被合并起来
4、cacheHandle缓存事件
- 默认情况下@click也会动态标记
- 增加cacheHandler会对事件进行缓存且没有PatchFlag
未开启 cacheHandler
开启 cacheHandler
5、SSR优化
- 静态节点直接输出绕过了vdom
- 动态节点动态渲染
6、tree shaking
- 编译时根据不同的情况引入不同的API,没用到的api会去剔除 vue3js.cn/docs/zh/gui…
Composition API:组合API
composition-api:更好的代码组织和逻辑复用
- setup:Composition API 的入口点
- 响应式API:reactive、ref、computed、readonly、watch、watchEffect等
- 新的生命周期函数:onMounted、 onUpdated,、onUnmounted等
- 自定义函数hooks函数
其他新增特性
- Teleport--瞬移组件的位置
- Suspense--异步加载组件
更好的Typescript支持
总结--Vue3比vue2的优势?
vue2的难题:
- 随着功能的增长,复杂组件的代码变得难以维护
- 对于ts的支持有限
vue3的优势:
- 性能更好
- 体积更小
- 更好的ts支持
- 更好的代码组织和逻辑抽离