首页 > 其他分享 >vue3和vue2的区别

vue3和vue2的区别

时间:2022-11-20 17:47:35浏览次数:48  
标签:vue2 区别 dom key vue3 组件 model


1、vue3完全支持typescript,提高项目的可维护性
2、Fragment:模板更简单。
vue3用到了一个虚拟的父级,可以多个根节点dom
vue2只能有一个父级节点
3、 vue2用 new Vue(); vue3用createApp();
多个实例时,vue2中的vue实例共享一个Vue构造函数,无法做到完全隔离
createApp方法返回一个提供上下文的应用实例,应用实例挂载的整个组件共享同一个上下文

4、vue2 的双向数据绑定是利用ES5 Object.definePropert()对数据进行劫持 结合 发布订阅模式的方式来实现的。

vue3 中使用了 es6 的 ProxyAPI 对数据代理。

5、Vue2与Vue3 最大的区别 —
Vue2使用选项类型API(Options API)对比Vue3合成型API(Composition API)
6、建立数据 data
Vue2 - 这里把数据放入data属性中
Vue3setup()方法里。

7、生命周期
Vue2--------------vue3
beforeCreate -> setup()
created -> setup()
beforeMount -> onBeforeMount
mounted -> onMounted
beforeUpdate -> onBeforeUpdate
updated -> onUpdated
beforeDestroy -> onBeforeUnmount
destroyed -> onUnmounted
activated -> onActivated
deactivated -> onDeactivated

vue3还提供了两个调试的钩子 onRenderTracked 状态跟踪,onRenderTriggered 状态触发,、
8、父子传参不同

vue3是通过setup里的两个参数props 和 第二参数里的emit参数进行接收和向外传递

9、vue3多了Teleport组件(瞬移组件) 和Suspense组件 (异步组件)
  移动前:
    

 

      移动后:

10、v-if和v-for的优先级
在vue2中:当v-if和v-for同时使用时,v-for的优先级高于v-if(因此我们通常需要计算属性先对数据进行加工处理,以达到性能优化的目的)
在vue3中:当v-if和v-for同时使用时,v-if的优先级高于v-for
11、.sync修饰符
vue2中:由于vue中是单向数据流,父子组件在传值时想要实现v-model的效果就要用到.sync修饰符来实现“双向绑定”
vue3中:对v-model进行了改造,不再需要 .sync 修饰符即可达到数据双向绑定的效果。在vue3中支持多个 v-model属性,默认使用 modelValue 作为 prop,update:modelValue作为事件,当多个v-model绑定时,书写为例:v-model:title="title",此时 title 作为prop,update:title 作为事件

12、全局挂载问题
vue2中:绑定全局的变量、方法等:Vue.prototype.$ajax = xxx
vue3中:const app = createApp({}); app.config.globalProperties.$ajax = xxx

13、key在template和v-if上的使用
vue2中:在使用v-if、vi-else、v-else-if时,为了保证dom节点渲染的正确性,通常需要在对应的节点添加不同的key,以确保vue在进行虚拟dom对比时是准确的;vue2中template在v-for循环时是不能设置key的,否则会产生警告(需要给子节点设置key)。
vue3中:在使用v-if、vi-else、v-else-if时,不用提供唯一的key对dom节点进行区分,因为vue内部会自动生成唯一的key,如果你提供了key,那你就要保证它的唯一性;vue3中template在v-for循环时,key应该设置在template标签上
14、vue3 $listeners深层监听被移除
vue2中:使用$attrs访问传递给组件的属性,使用$listeners访问传递给组件的事件 (需要结合inheritAttrs:false)。
vue3中:虚拟dom中,事件监听器仅仅是以on为前缀的属性
15、this问题
vue2中:无时无刻都要使用this
vue3中:因为setup函数的存在,所有的props、data等都不需要用this进行访问(vue3对vue2绝大多数是兼容的,如果你用了vue2相关的东西,那你还是需要像vue2一样书写)

标签:vue2,区别,dom,key,vue3,组件,model
From: https://www.cnblogs.com/webdragon/p/16909024.html

相关文章

  • 数据库热备和冷备的区别是什么
    数据库热备:一般用于保证服务正常不间断运行,用两台机器作为服务机器,一台用于实际数据库操作应用,另外一台实时的从前者中获取数据以保持数据一致.如果当前的机器熄火,备份的......
  • ASR技术和TTS技术含义及区别
    1、TTS和ASR的概念区别我们比较熟悉的ASR技术(Automa​​ti​​​cSpeechRecognition,​​语音识别​​),是将声音转化为文字,可类比于人类的耳朵。而TTS技术(Text-To-Speech,语......
  • 一文搞懂"衬底"“外延”的区别和联系
      在半导体产业链中,特别是第三代半导体(宽禁带半导体)产业链中,会有衬底及外延层之分,那外延层的存在有何意义?和衬底的区别是什么呢?首先,先普及一个小概念:晶圆制备包括衬......
  • java——多线程——并发与并行的了解以及区别
                     多线程的概念想要设计一个程序,边打游戏边听歌,怎么设计?得使用多进程或者多线程来解决.并发与并行并发:指两......
  • Nand Flash 和Nor Flash 的区别
    NandFlash和NorFlash的区别 主要的区别就是:1、NAND比NOR便宜;NAND的容量比NOR大(指相同成本);NAND的擦写次数是NOR的十倍;NAND的擦除和写入速度比NOR快,读取速度......
  • 41. apply(), map(), applymap()的区别
     -------------------------------------------------------------------------------------------------------------------------------------#apply(),map(),appl......
  • GBDT与XGBoost区别
    简单说就是xgboost用二阶导数取代了GBDT中的步长,所以迭代的更精确from:https://zhuanlan.zhihu.com/p/50176849GBDT和XGBoost两个模型后者在Kaggle中使用的相当频繁......
  • 硬件测试与软件测试的一些区别
    硬件测试一般是硬件产品的测试,保证测试质量和顺利进行,参与硬件测试技术和规范的改进和制定。测试人员需要熟练使用万用表、示波器等各种基本测试仪器。软件测试是利用人工......
  • vue3 基础-API-computed
    API-computed基本使用前些章节讲了一些常用的api如setup,ref,reactive,toRef...等,并以一个todoList的小案例来体现在vue3中如何进行......
  • vue3 基础-API-watch 和 watchEffect
    watch和watchEffect前篇对computed属性如何在api中基本使用,即从vue中引入,然后通过直接传函数或者传对象的方式,开箱即用,非常清晰易......