vue3初探一

559 阅读1分钟

官方地址: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算法是只会对比标记的节点 image.png

3、hoistStatic静态提升

  • 将静态节点的定义,提升到父作用域,缓存起来
  • 多个相邻的静态节点会被合并起来 image.png

4、cacheHandle缓存事件

  • 默认情况下@click也会动态标记
  • 增加cacheHandler会对事件进行缓存且没有PatchFlag 未开启 cacheHandler image.png 开启 cacheHandler image.png

5、SSR优化

  • 静态节点直接输出绕过了vdom
  • 动态节点动态渲染

image.png

6、tree shaking

Composition API:组合API

composition-api:更好的代码组织和逻辑复用

  • setup:Composition API 的入口点
  • 响应式API:reactive、ref、computed、readonly、watch、watchEffect等
  • 新的生命周期函数:onMounted、 onUpdated,、onUnmounted等
  • 自定义函数hooks函数 image.png

其他新增特性

  • Teleport--瞬移组件的位置
  • Suspense--异步加载组件

更好的Typescript支持

总结--Vue3比vue2的优势?

vue2的难题:

  • 随着功能的增长,复杂组件的代码变得难以维护
  • 对于ts的支持有限

vue3的优势:

  • 性能更好
  • 体积更小
  • 更好的ts支持
  • 更好的代码组织和逻辑抽离

参考:

Vue 3.0 企业级项目实战

coding.imooc.com/learn/list/…