vue3与vue2区别概览

整体区别

  • 使用proxy代替defineProperty实现数据相应式
  • vue3支持多个根元素
  • 更好的ts支持
  • 体积比vue2更小,性能提升,运行速度更快
  • diff算法优化,vue2中的虚拟dom是全量的对比,vue3新增了静态标记(patchflag),与上次虚拟节点对比时,只对比带有(patchflag)标记的节点(动态数据所在的节点),以减少非动态数据的比对时的性能消耗。
  • 静态提升,vue2无论元素是否参与更新,每次都会重新创建然后再渲染。vue3对于不参与更新的元素,会做静态提升(提升到render函数之外),只会被创建一次,在渲染时直接复用即可。
  • 组合式api将逻辑代码集中,便于维护

组合式 API的优点

  1. 更好的逻辑复用:用组合函数代替mixins
  2. 更灵活的代码组织:v2造成相同的逻辑关注点拆分在不同的选项中,v3则将同一个逻辑关注点相关的代码被归为了一组
  3. 更好的类型推导:大多数时候,用 TypeScript 书写的组合式 API 代码和用 JavaScript 写都差不太多!
  4. 更小的生产包体积:不依赖this,对代码压缩友好

vue2.x与vue3.x语法区别

  1. v-for的优先级在v2高于v-if,v3则相反
  2. v-directive钩子函数不同,v3类似生命周期钩子,v2是bind、inserted等
  3. v-model在组件上的展开形式不同,vue2为:value=xxx和@input=xxx,vue3为:modelValue=xxx和@update:modelValue=xxx,组件可以绑定多个v-model,可以传参,可以自定义修饰符
  4. v3增加computed和watch调试功能:onTrack和onTrigger
  5. vue3的监听对象,watch默认是深度监听,vue2则不是
  6. vue3中模板中的组件名可以使用大驼峰
  7. 默认关闭实例引用(通过组件ref访问$parent),必须手动暴露出去
  8. vue3已不推荐使用mixins,用组合式函数代替,缺点,来源不明,命名空间冲突,隐式的跨mixin交流
  9. vue3新增卸载钩子,去除销毁钩子
  10. vue2,tbody包裹子组件使用,vue3使用,is 的值必须加上前缀 vue: 才可以被解析为一个 Vue 组件
  11. 移除.sync,使用v-model:name='username'模式代替
  12. 移除.native修饰符,直接在组件上绑定事件即可(继承事件),如果要监听子组件的emit事件,需要先声明emit选项
  13. 移除$listeners,事件包含在$attrs中,多节点时必须显示绑定在某个元素

router3.x与router4.x

  1. 移除filter过滤器选项
  • 3.x通过mode字段设置hash还是history模式,4.x通过history字段设置。
  • 在4.x中routes 数组的顺序并不重要!,3.x则规定含有通配符的路由应该放在最后。
  • 3.x transition包裹router-view,4.x router-view包裹transition
  • 4.x新增动态路由

vuex3 与 vuex4.x

  • 新增useStore方法来访问store

Vuex vs. Pinia

  • mutation 已被弃用
  • 不再有嵌套结构的模块
  • 不再有可命名的模块
  • 可以重置state

你可能感兴趣的:(vue3与vue2区别概览)