位置: IT常识 - 正文

vue2和vue3的区别(由浅入深)(vue2和vue3的区别大么)

编辑:rootadmin
vue2和vue3的区别(由浅入深) 前言

推荐整理分享vue2和vue3的区别(由浅入深)(vue2和vue3的区别大么),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue2和vue3的区别大不,vue2和vue3的区别面试题,vue2和vue3的区别以及发生的哪些变化,vue2和vue3的区别简答,vue2和vue3的区别大么,vue2和vue3的区别大不,vue2和vue3的区别大不,vue2和vue3的区别面试题,内容如对您有帮助,希望把文章链接给更多的朋友!

vue2和vu3之前的区别,一直以来是面试必考题目,如何回答,回答的层次决定了面试者的对于vue2,3的理解,以及对于vue3目前稳定版本发展的方向的了解,即考察使用程度,又考察了学习能力,可以说是回答即可以很简单,也可以很不简单,这里需要注意的是面试官的面试程度,需要我们层层递进,由浅入深来回答,这样可以体现出面试者的考虑全面,又能体现知识广度。简而言之,vue2升级vue3之后变得更快,更轻,协作更方便。无论对于我们开发者的体验或者用户使用方面都是升级优化,但是本质区别是什么,下面分为几个部分进行讲解。

 vue2 vs vue3对比vue2vue3脚手架命令式可视化创建脚⼿架组件通信见下文见下文数据监听watch,computedwatch,watchEffect,computed双向绑定Object.definePropertyProxyAPI⽣命周期见下文见下文api选项式组合式   双向绑定更新

vue2 的双向数据绑定是利⽤ES5 的⼀个 API ,Object.defineProperty()对数据进⾏劫持 结合 发布订阅模式的⽅式来实现的。

vue3 中使⽤了 ES6 的 ProxyAPI 对数据代理,通过 reactive() 函数给每⼀个对象都包⼀层 Proxy,通过 Proxy 监听属性的变化,从⽽ 实现对数据的监控。

这⾥是相⽐于vue2版本,使⽤proxy的优势如下

1.defineProperty只能监听某个属性,不能对全对象监听 可以省去for in、闭包等内容来提升效率(直接绑定整个对象即可)

2.可以监听数组,不⽤再去单独的对数组做特异性操作,通过Proxy可以直接拦截所有对象类型数据的操作,完美⽀持对数组的监听。

实例化

Vue2.x中new出的实例对象,所有的东西都在这个vue对象上,这样其实⽆论你⽤到还是没⽤到,都会跑⼀遍,这样不仅提⾼了性能消耗,也⽆疑增加了⽤户加载时间。

⽽vue3.0中可以⽤ES module imports按需引⼊,如:keep-alive内置组件、v-model指令,等等,不仅我们开发起来更加的便捷,减少 了内存消耗,也同时减少了⽤户加载时间,优化⽤户体验。

生命周期

引用掘金图片如下:

获取props

vue2在script代码块可以直接获取props,vue3通过setup指令传递

vue2:console.log(‘props’,this.xxx)vue3:setup(props,context){ console.log(‘props’,props) }数据和方法的定义

Vue2使⽤的是选项类型API(Options API),Vue3使⽤的是合成型API(Composition API)

vue2和vue3的区别(由浅入深)(vue2和vue3的区别大么)

Vue2:

data() { return {}; }, methods:{ }

Vue3:

数据和⽅法都定义在setup中,并统⼀进⾏return{}

给父组件传值emitvue2:this.$emit()vue3:setup(props,context){context.emit()} watchEffect

Vue3中除了watch,还引入了副作用监听函数watchEffect,用过之后我发现它和React中的useEffect很像,只不过watchEffect不需要传入依赖项。

那么什么是watchEffect呢?

watchEffect它会立即执行传入的一个函数,同时响应式追踪其依赖,并在其依赖变更时重新运行该函数。

computed和watch所依赖的数据必须是响应式的。Vue3引入了watchEffect,watchEffect 相当于将 watch 的依赖源和回调函数合并,当任何你有用到的响应式依赖更新时,该回调函数便会重新执行。不同于 watch的是watchEffect的回调函数会被立即执行,即({ immediate: true })。

组件通信

注意

props中数据流是单项的,即子组件不可改变父组件传来的值

在组合式API中,如果想在子组件中用其它变量接收props的值时需要使用toRef将props中的属性转为响应式。

attrs和listeners

子组件使用$attrs可以获得父组件除了props传递的属性和特性绑定属性 (class和 style)之外的所有属性。

子组件使用$listeners可以获得父组件(不含.native修饰器的)所有v-on事件监听器,在Vue3中已经不再使用;但是Vue3中的attrs不仅可以获得父组件传来的属性也可以获得父组件v-on事件监听器

路由

vue3和vue2路由常用功能只是写法上有些区别:

vue3的beforeRouteEnter作为路由守卫的示例是因为它在setup语法糖中是无法使用的;大家都知道setup中组件实例已经创建,是能够获取到组件实例的。而beforeRouteEnter是再进入路由前触发的,此时组件还未创建,所以是无法用在setup中的;如果想在setup语法糖中使用则需要再写一个script 如下:

<script>export default { beforeRouteEnter(to, from, next) { // 在渲染该组件的对应路由被 confirm 前调用 next() },};</script>

vue3路由写法:

<script>import { defineComponent } from 'vue'import { useRoute, useRouter } from 'vue-router'export default defineComponent({ beforeRouteEnter (to, from, next) { // 在渲染该组件的对应路由被 confirm 前调用 next() }, beforeRouteLeave ((to, from, next)=>{//离开当前的组件,触发 next() }), beforeRouteLeave((to, from, next)=>{//离开当前的组件,触发 next() }), setup() { const router = useRouter() const route = useRoute() const toPage = () => { router.push(xxx) } //获取params 注意是route route.params //获取query route.query return { toPage } },});</script>

vue2写法:

<script>export default { beforeRouteEnter (to, from, next) { // 在渲染该组件的对应路由被 confirm 前调用 next() }, beforeRouteEnter (to, from, next) { // 在渲染该组件的对应路由被 confirm 前调用 next() }, beforeRouteLeave ((to, from, next)=>{//离开当前的组件,触发 next() }), beforeRouteLeave((to, from, next)=>{//离开当前的组件,触发 next() }), methods:{ toPage(){ //路由跳转 this.$router.push(xxx) } }, created(){ //获取params this.$route.params //获取query this.$route.query }}</script> 总结

vue2和vue3比较还是有很多不一样的地方,比如setup语法糖的形式最为便捷而且更符合开发者习惯,未来vue3将会大面积使用这种规则,这样更加符合开发习惯和降低后续维护的成本,还有目前Vue3已经成为了Vue的默认版本,后续维护应该也会以Vue3为主。希望各位同学赶紧学起来吧~

  
本文链接地址:https://www.jiuchutong.com/zhishi/300589.html 转载请保留说明!

上一篇:图像工程:红外图像增强(红外图像识别算法)

下一篇:Vue中的v-for循环,实现div块的循环生成(vue里的for循环)

  • iphone13pro屏幕是2k的吗(13pro屏幕尺寸多大)

    iphone13pro屏幕是2k的吗(13pro屏幕尺寸多大)

  • 手机怎么分身第二个手机(手机怎么分身第二个手机苹果)

    手机怎么分身第二个手机(手机怎么分身第二个手机苹果)

  • 苹果11语音唤醒功能在哪里(苹果11语音唤醒功能在哪里打开)

    苹果11语音唤醒功能在哪里(苹果11语音唤醒功能在哪里打开)

  • 抖音链接淘宝的条件(抖音链接淘宝的橱窗是什么时候上线的)

    抖音链接淘宝的条件(抖音链接淘宝的橱窗是什么时候上线的)

  • 佳能mp如何取消5011代码(佳能怎么取消eco模式吗)

    佳能mp如何取消5011代码(佳能怎么取消eco模式吗)

  • 为什么图片在word里面只显示一部分(为什么图片在word里面不显示)

    为什么图片在word里面只显示一部分(为什么图片在word里面不显示)

  • potato注册一直显示连接(potato软件注册不了)

    potato注册一直显示连接(potato软件注册不了)

  • 华为Nova5朗读模式怎么关闭(华为nova5i随选朗读)

    华为Nova5朗读模式怎么关闭(华为nova5i随选朗读)

  • 腾讯课堂能挂着不管吗(腾讯课堂能挂着玩其他软件会被发现吗)

    腾讯课堂能挂着不管吗(腾讯课堂能挂着玩其他软件会被发现吗)

  • 不支持配件还能继续充电吗(不支持配件啥意思)

    不支持配件还能继续充电吗(不支持配件啥意思)

  • 手机怎么装内存卡(手机怎么装内存卡 oppo)

    手机怎么装内存卡(手机怎么装内存卡 oppo)

  • word怎么合并(word怎么合并成一页)

    word怎么合并(word怎么合并成一页)

  • 微信抢不了红包要认证(微信抢不了红包了怎么办)

    微信抢不了红包要认证(微信抢不了红包了怎么办)

  • plc输出点类型主要有哪些(plc输出点类型的有主要有哪些)

    plc输出点类型主要有哪些(plc输出点类型的有主要有哪些)

  • 引起计算机系统不稳定的因素有哪些(引起计算机系统不稳定)

    引起计算机系统不稳定的因素有哪些(引起计算机系统不稳定)

  • 海思麒麟710和710f有什么区别(海思麒麟710和710a哪个好)

    海思麒麟710和710f有什么区别(海思麒麟710和710a哪个好)

  • 手机无法恢复出厂设置怎么办(手机无法恢复出厂设置怎么弄)

    手机无法恢复出厂设置怎么办(手机无法恢复出厂设置怎么弄)

  • 华为手环4什么时候出的(华为手环4什么时候发布的)

    华为手环4什么时候出的(华为手环4什么时候发布的)

  • 荣耀9x升降摄像头怎么打开(荣耀9x升降摄像头卡住了)

    荣耀9x升降摄像头怎么打开(荣耀9x升降摄像头卡住了)

  • 怎么查看拼多多用户名(怎么查看拼多多店铺的营业执照)

    怎么查看拼多多用户名(怎么查看拼多多店铺的营业执照)

  • 抖音怎么不显示动态了(抖音怎么不显示特效标志)

    抖音怎么不显示动态了(抖音怎么不显示特效标志)

  • 掌通家园可以回放吗(掌通家园可以回看吗)

    掌通家园可以回放吗(掌通家园可以回看吗)

  • 高德地图实景图怎么用(高德地图实景图片)

    高德地图实景图怎么用(高德地图实景图片)

  • 360浏览器如何查看版本(360浏览器如何查看收藏的网址)

    360浏览器如何查看版本(360浏览器如何查看收藏的网址)

  • Windows11 在启动时冻结死机怎么办?Win11启动时冻结修复图文方法(windows11启动卡在转圈圈)

    Windows11 在启动时冻结死机怎么办?Win11启动时冻结修复图文方法(windows11启动卡在转圈圈)

  • deepin20窗口最小化魔灯效果怎么设置?(deepin缩放)

    deepin20窗口最小化魔灯效果怎么设置?(deepin缩放)

  • Aerial view of Chapel Bridge over the river Reuss in Lucerne, Switzerland (© Neleman Initiative/Gallery Stock)

    Aerial view of Chapel Bridge over the river Reuss in Lucerne, Switzerland (© Neleman Initiative/Gallery Stock)

  • 公款私存个人账户怎么处理
  • 原材料的入账价值包括保险费吗
  • 营业执照经营范围劳务怎么写
  • 连号发票不许报销的具体发票类型
  • 资产负债表应付账款怎么算
  • 软件开发成本核算模板
  • 一般纳税人月销售额多少免征增值税
  • 房地产公司土地价款抵扣的账务处理
  • 外商投资企业退出条件
  • 朋友抵押贷款通过我公司名义会怎样
  • 金融债券利息收入免企业所得税吗
  • 进项税发票认证流程
  • 公司为什么要成立工会委员会
  • 资管产品增值税征收管理规定
  • 企业发给职工的全年一次性奖金不缴纳个人所得税对吗
  • 车辆保险分期分摊怎么做账?
  • 医疗保险费扣除比例
  • 无形资产和长期待摊费用思维导图
  • 账外资产评估入账固定资产折旧可以税前扣除吗?
  • 路由器怎么设置2.4g网络
  • 充值会员卡销售话语
  • 电脑台式机显卡怎么拆
  • 累积带薪缺勤的例题
  • PHP:curl_reset()的用法_cURL函数
  • 期房怎么交易流程
  • debian配置
  • PHP:imagecolortransparent()的用法_GD库图像处理函数
  • mapbox wms
  • 单位缴费基数申报提交了能改吗
  • 教育经费地方出多少
  • php操作mysql数据库
  • vue 配置
  • 收到进项发票不认证可以吗
  • 非货币性资产交换准则
  • 文章让修改了就一定会接收吗?
  • 个人去税务局开劳务发票要交多少税
  • 核定征收的情况包括
  • 发货环节产生的影响
  • 外包工程会计怎么做账
  • 预收账款和应收账款的转换
  • 库存股属于什么账户
  • 库存商品过期了还能用吗
  • 派发股利政策
  • 投资性房地产从成本模式转为公允价值模式
  • 收到水电费发票要交印花税吗
  • 母子公司无偿划转土地
  • 暂估成本比实际高分录
  • 保理手续费计入投资收益吗
  • 工伤保险待遇是否属于劳动争议
  • 银行存款利息计算器在线计算器
  • 库存商品与存货总额之比
  • 用友软件如何反结账流程
  • 旅游应当提示参加团队旅游的旅游者按照规定购买什么
  • 房地产开发企业土地增值税怎么计算
  • sqlserver向表中添加数据用什么命令
  • 醒狗音乐免费下载歌曲2017最新版
  • aspnet开发和运行环境
  • mmc无法创建管理单元怎么办win11
  • win8安装win10驱动
  • win10开始无法打开
  • win7更新和安全在哪里
  • xp开机启动项在哪里设置方法
  • dell笔记本系统安装步骤
  • apache for mac
  • win8.1卸载软件在哪里
  • win7系统待机设置
  • linux源码包
  • 主流安卓开发
  • js中颜色对应代码
  • es6十大特性
  • javascript的理解
  • javascript高级程序设计第五版 pdf下载
  • python常用的库
  • 用javascript
  • 15个值得开发人是谁
  • 下午税务局几点上班
  • 电子发票开票失败怎么回事?
  • 辽宁税务微信公众号
  • 内蒙古城镇土地使用税税率表
  • 地税局基层职位怎么样
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设