位置: 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循环)

  • pr导出设置(pr导出设置在哪里)

    pr导出设置(pr导出设置在哪里)

  • OPPO Ace2有耳机孔的吗(oppo ace2耳机插孔)

    OPPO Ace2有耳机孔的吗(oppo ace2耳机插孔)

  • 华为手机出厂设置后数据能否恢复(华为手机出厂设置怎么恢复)

    华为手机出厂设置后数据能否恢复(华为手机出厂设置怎么恢复)

  • 快手买东西拒收会产生运费吗(快手买东西拒收怎么操作)

    快手买东西拒收会产生运费吗(快手买东西拒收怎么操作)

  • 苹果11左上角有个箭头(苹果11左上角有一个弧形阴影)

    苹果11左上角有个箭头(苹果11左上角有一个弧形阴影)

  • 美团绑卡优惠是一次性的吗(美团绑卡优惠是多少)

    美团绑卡优惠是一次性的吗(美团绑卡优惠是多少)

  • 苹果手机更新系统会变卡吗(苹果手机更新系统卡住了怎么办)

    苹果手机更新系统会变卡吗(苹果手机更新系统卡住了怎么办)

  • qq开启幸运字符对方知道吗(qq开启幸运字符saudade什么意思)

    qq开启幸运字符对方知道吗(qq开启幸运字符saudade什么意思)

  • 手机微博怎么看谁转发了我(手机微博怎么看live图)

    手机微博怎么看谁转发了我(手机微博怎么看live图)

  • 加好友显示对方存在异常是怎么回事(加好友显示对方被加好友过于频繁怎么办)

    加好友显示对方存在异常是怎么回事(加好友显示对方被加好友过于频繁怎么办)

  • 苹果8p建议升级13.4吗(苹果8p建议升级15.7吗)

    苹果8p建议升级13.4吗(苹果8p建议升级15.7吗)

  • win10会自己安装驱动吗(win10会自己安装显卡驱动吗)

    win10会自己安装驱动吗(win10会自己安装显卡驱动吗)

  • 荣耀9x下面的返回键怎么设置(荣耀9x怎么把返回键调左右)

    荣耀9x下面的返回键怎么设置(荣耀9x怎么把返回键调左右)

  • .ts是什么文件(tst属于什么文件)

    .ts是什么文件(tst属于什么文件)

  • 微博消息感叹号是什么意思(微博私信叹号)

    微博消息感叹号是什么意思(微博私信叹号)

  • 二代身份证芯片位置(二代身份证芯片日本造)

    二代身份证芯片位置(二代身份证芯片日本造)

  • 小米盒子怎么调整屏幕大小(小米盒子怎么调整画面比例)

    小米盒子怎么调整屏幕大小(小米盒子怎么调整画面比例)

  • 华为云空间在哪里找到(华为云空间在哪里看照片)

    华为云空间在哪里找到(华为云空间在哪里看照片)

  • 电脑ssl协议怎么开启(电脑ssl协议未开启是什么意思)

    电脑ssl协议怎么开启(电脑ssl协议未开启是什么意思)

  • 无限截词符的作用(表示无限截词检索)

    无限截词符的作用(表示无限截词检索)

  • 怎么查看亲属卡余额(怎么查看亲属卡消费明细)

    怎么查看亲属卡余额(怎么查看亲属卡消费明细)

  • iphone微信听筒模式怎么改(苹果微信 听筒)

    iphone微信听筒模式怎么改(苹果微信 听筒)

  • nfc功能vivox27手机有吗(vivox27有nfc)

    nfc功能vivox27手机有吗(vivox27有nfc)

  • a1901支持电信吗(a1906支持电信吗)

    a1901支持电信吗(a1906支持电信吗)

  • 如何把照片容量变小(如何把照片容量改到200kb以下)

    如何把照片容量变小(如何把照片容量改到200kb以下)

  • 拉勾网如何屏蔽公司(拉勾怎么屏蔽猎头)

    拉勾网如何屏蔽公司(拉勾怎么屏蔽猎头)

  • 华为鸿蒙双击背面打开健康码操作方法(华为鸿蒙双击背面打开健康码)

    华为鸿蒙双击背面打开健康码操作方法(华为鸿蒙双击背面打开健康码)

  • 天猫魔筒和360安全路由器哪个好 360安全路由器和天猫魔筒配置区别对比(天猫魔投安装教程)

    天猫魔筒和360安全路由器哪个好 360安全路由器和天猫魔筒配置区别对比(天猫魔投安装教程)

  • 猿创征文|Python-sklearn机器学习之旅:我的第一个机器学习实战项目(猿创征文,宝藏工具篇)

    猿创征文|Python-sklearn机器学习之旅:我的第一个机器学习实战项目(猿创征文,宝藏工具篇)

  • 土地使用税的纳税义务人
  • 个人所得税手续费返还要交企业所得税吗
  • 文化建设费退税会计分录怎么做
  • 公司收到待报解预算收入会计分录
  • 企业减少注册资金需要缴税吗
  • 固定收益凭证是固定的吗
  • 城建税计税依据扣除增值税期末留抵
  • 公对公转账需要交税吗?
  • 怎样查是否为一类银行卡
  • 会计工作的基本认识
  • 小规模纳税人销售货物税率是多少
  • 公司预支了然后来报销的帐怎么做?
  • 专票入账用哪一联
  • 房租当月无发票怎么办
  • 花卉租赁发票税率是多少
  • 工程发票没写经办人没写可以吗
  • 应交增值税是总额吗
  • 金三接口调用失败怎么办?
  • 投资性房地产转为自用的会计处理
  • 华为授权查询系统
  • 此 google 帐号尚未与设备关联
  • 已达到计算机的连接数最大值win7
  • 个体户税务申报需要什么资料和手续
  • 如何在win11上安装旧版ie
  • 股东分红个税怎么做账
  • 小程序嵌入h5页面可以不写安全地址吗为什么
  • PHP:json_last_error()的用法_JSON函数
  • 公司一直没有收入怎么办
  • 房产税是什么意思,简单的回答
  • 亚运村夜宵地方
  • php连接数据库实现登录注册
  • phpexcel导入
  • 没有什么盈利的公司应该进吗
  • 个税的本期收入是什么意思
  • 研发费用归集范围有哪些
  • 出口未申报如何处理
  • python3.9怎么删除
  • mysql数据库死锁产生的原因及解决方案
  • python有public
  • 出口汽车配件怎么报关
  • 收伙食费入什么科目
  • 营业总收入包含什么
  • 建筑安装工程公司起名
  • 其他应收款科目余额在贷方表示什么
  • 分公司可以在银行贴现吗
  • 房产税和城镇土地使用税
  • 住宿发票丢失
  • 一般销售商品收入怎么算
  • 我国消费现状分析
  • 折扣 会计处理
  • 风险纳税人去税务局去报税可以吗
  • 预付账款可以开发票吗
  • 暂估材料发票长期不到
  • 调整事项涉及损益的
  • 减免税款月末是否结平
  • 银行承兑到期后怎么兑现
  • 如何给初建单位发邮件
  • mysql jdbc
  • MySQL PXC构建一个新节点只需IST传输的方法(推荐)
  • 开启win7
  • 开始菜单里设置在哪里
  • 解决windows hello人脸识别找不到摄像头
  • 常用的网络操作命令
  • win7系统出现蓝屏怎么进去桌面
  • Ubuntu操作系统安装步骤
  • win10用着怎么样
  • windowsxp的开始菜单
  • ScanMailOutLook.exe - ScanMailOutLook是什么进程 有什么用
  • win10预览版怎么安装
  • win7电脑dns存在问题怎么修复
  • nginx服务器日志
  • 使用一串代码
  • 安卓机虚拟键盘
  • 深入理解python特性
  • unity3d物体旋转
  • window.onerror()的用法与实例分析
  • jquery做下拉
  • 山西国家税务网官网
  • a类棉b类棉c类的区别
  • 加油账单怎么查询
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设