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

  • 抖音视频完后显示抖音号(抖音显示视频)

    抖音视频完后显示抖音号(抖音显示视频)

  • 快手评论后面的字倒过来了(快手评论后面的Q符号怎么弄)

    快手评论后面的字倒过来了(快手评论后面的Q符号怎么弄)

  • 小米手机垃圾短信在哪里看(小米手机里的垃圾短信在哪里,怎么删除?)

    小米手机垃圾短信在哪里看(小米手机里的垃圾短信在哪里,怎么删除?)

  • 抖音怎么看私信(抖音怎么看私信对方是否看过)

    抖音怎么看私信(抖音怎么看私信对方是否看过)

  • 苹果11下面两个喇叭为什么只会响一个(苹果11下面两个喇叭没有声音)

    苹果11下面两个喇叭为什么只会响一个(苹果11下面两个喇叭没有声音)

  • iphone8配耳机吗(iphone8带的耳机是什么插口的)

    iphone8配耳机吗(iphone8带的耳机是什么插口的)

  • sp版本是什么意思(spt版本)

    sp版本是什么意思(spt版本)

  • iphone11掉水里怎么办(苹果11掉水里立马拿起来有问题吗?)

    iphone11掉水里怎么办(苹果11掉水里立马拿起来有问题吗?)

  • 小米mix2怎么开启快速充电(小米mix2怎么开热点)

    小米mix2怎么开启快速充电(小米mix2怎么开热点)

  • dp75sdi是第几代(亚马逊dp75sdi是第几代)

    dp75sdi是第几代(亚马逊dp75sdi是第几代)

  • 新电脑充电要注意什么(新电脑 充电)

    新电脑充电要注意什么(新电脑 充电)

  • 微信公众号注销要多久(微信公众号注销流程)

    微信公众号注销要多久(微信公众号注销流程)

  • 小米8支持双4g待机吗(小米8支持双电信吗?)

    小米8支持双4g待机吗(小米8支持双电信吗?)

  • iphone7plus防水级别(iphone7plus 防水)

    iphone7plus防水级别(iphone7plus 防水)

  • 苹果手机怎么一键加速(苹果手机怎么一键关闭所有程序)

    苹果手机怎么一键加速(苹果手机怎么一键关闭所有程序)

  • vue可以添加照片吗(vue在图片上增加文字)

    vue可以添加照片吗(vue在图片上增加文字)

  • 南方cass怎么标注距离(南方cass怎么标注坐标)

    南方cass怎么标注距离(南方cass怎么标注坐标)

  • 苹果x玻璃壳抗摔吗(苹果x玻璃壳抗摔嘛)

    苹果x玻璃壳抗摔吗(苹果x玻璃壳抗摔嘛)

  • 华为nova5隐藏图标怎么弄(华为nova5隐藏相册怎么打开)

    华为nova5隐藏图标怎么弄(华为nova5隐藏相册怎么打开)

  • 苹果x拍视频怎么暂停(苹果x拍视频怎么加音乐)

    苹果x拍视频怎么暂停(苹果x拍视频怎么加音乐)

  •  word怎么设置纸型16开(Word怎么设置纸张方向为横向)

    word怎么设置纸型16开(Word怎么设置纸张方向为横向)

  • 华为nemtl00h如何插卡(华为nemtl00怎么恢复出厂设置)

    华为nemtl00h如何插卡(华为nemtl00怎么恢复出厂设置)

  • m1852是什么手机(m1882是什么手机)

    m1852是什么手机(m1882是什么手机)

  • 华为护眼模式利弊(华为手机护眼模式原理)

    华为护眼模式利弊(华为手机护眼模式原理)

  • 群主转让后如何收回群(群主转让如何找回)

    群主转让后如何收回群(群主转让如何找回)

  • 换新手机照片如何转移(换手机照片如何转入新手机)

    换新手机照片如何转移(换手机照片如何转入新手机)

  • hdaudpropshortcut.exe是什么进程 作用是什么 hdaudpropshortcut进程查询

    hdaudpropshortcut.exe是什么进程 作用是什么 hdaudpropshortcut进程查询

  • JavaScript实现背景图像切换3D动画效果(javascript背景图片怎么导入)

    JavaScript实现背景图像切换3D动画效果(javascript背景图片怎么导入)

  • 【微信小程序】条件渲染和列表渲染(微信小程序开发)

    【微信小程序】条件渲染和列表渲染(微信小程序开发)

  • 村委会什么会计准则
  • 怎么恢复自然人个人信息
  • 工会经费余额在借方怎么办
  • 餐饮服务需要缴纳增值税吗
  • 税务局多扣的一笔钱
  • 季度利润表不包括什么
  • 现金流量表中支付的税费包括哪些
  • 开发区代管
  • 外购货物准予抵扣进项税额26万元,货物已验收入库
  • 个税手续费返还政策最新规定2023
  • 一个员工在两家公司上班违法吗
  • 进口增值税未抵扣怎么办
  • 收派服务费入什么科目
  • 关于两套账老板和会计须知的4个点
  • 小规模纳税人自来水税率
  • 长期股权投资的初始计量
  • 维修属于劳务还是劳务
  • 公司缴纳的社保离职后自己可以缴纳社保
  • 企业所得税抵缴欠税
  • 收到采购商品
  • 苹果手机zm
  • 购买国外技术需要缴纳什么税
  • Win10怎么关闭搜索框
  • 电脑中毒后如何不装系统清理掉
  • 操作系统的内存映射
  • php unset()
  • php编程基础与实例教程
  • 油气勘探支出包括
  • post请求怎么用
  • 二手车过户需要带什么资料
  • 解决烧心最快方法
  • 非营利组织增值税
  • 金税三期系统的对比有哪几个
  • 动态设置窗体记录源属性
  • gpt3 plug
  • 嵌入式软件行业在加计扣除的时候可以看作是制造业吗
  • 民非企业是否可以做酒
  • 开一般户需要基本户开户许可证吗
  • 企业可以一次性现金的方式发放工资
  • MicrosoftSQLserver2014可以卸载吗
  • PostgreSQL教程(十五):系统表详解
  • sql server新增数据
  • SQL Server性能优化工具Profiler
  • 进出口货物报关单填制规范
  • 社保下个月扣款
  • 对于相关人员培训存在的问题
  • 暂估成本的账务处理分录
  • 小规模纳税人购车是怎么抵税的
  • 建安企业增值税预缴
  • 项目所在地个税网上怎么报
  • 无进项发票开具销项发票
  • 商品销售方式
  • 业务招待费算期间费用吗
  • 无形资产摊销能加计扣除吗
  • 现金日记账月末怎么结账图片
  • Linux下Mysql5.7.19卸载方法
  • linux进入操作系统
  • centos6安装yum源
  • xp系统怎么把ie浏览器放到桌面
  • mac打不开以下磁盘映像
  • macbookpro通知栏
  • centos7更改默认内核
  • win7搜索选项
  • 如何注销windows账户登录
  • GhostXP_SP3活力版V3.0_系统之家首发
  • win8网络图标不显示
  • opengl的函数
  • firefox background-image垂直平铺问题的解决方法
  • python 二叉树
  • linux编写一个脚本
  • android-ListView(1)-listview概览
  • 编写一个c#
  • jquery ajax分页插件的简单实现
  • 很不错的两款Bootstrap Icon图标选择组件
  • jquery如何加背景图片
  • 电子税务局驱动安装步骤
  • 法律服务所与律师事务所区别
  • app平台怎么投诉商家
  • 国税是哪几种
  • 营销代码是多少
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设