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

  • 微博可以同时登录两个手机吗

    微博可以同时登录两个手机吗

  • 录音在哪里找(录音在哪里找到)

    录音在哪里找(录音在哪里找到)

  • office另存为快捷键(office文件另存为的快捷键)

    office另存为快捷键(office文件另存为的快捷键)

  • 宽带拨号上网什么意思(宽带拨号上网是啥)

    宽带拨号上网什么意思(宽带拨号上网是啥)

  • 手机qq删好友是双删吗(手机qq删好友是单向吗)

    手机qq删好友是双删吗(手机qq删好友是单向吗)

  • 苹果有背光无显示黑屏(苹果有背光无显示属于质量问题吗)

    苹果有背光无显示黑屏(苹果有背光无显示属于质量问题吗)

  • 手机连拍功能在哪里设置(手机连拍怎么弄)

    手机连拍功能在哪里设置(手机连拍怎么弄)

  • 抖音视频删了重发有影响吗(抖音视频删了重发会被限流吗)

    抖音视频删了重发有影响吗(抖音视频删了重发会被限流吗)

  • 对方振铃是不是拉黑了(对方振铃是不是把手机调成震动了?)

    对方振铃是不是拉黑了(对方振铃是不是把手机调成震动了?)

  • vivo账号是什么意思(vivo账号是什么东西密码不对怎么办)

    vivo账号是什么意思(vivo账号是什么东西密码不对怎么办)

  • 背夹电池可以一直装在手机上吗(背夹电池可以一直放电吗)

    背夹电池可以一直装在手机上吗(背夹电池可以一直放电吗)

  • 笔记本电脑平板电脑都属于(笔记本电脑平板电脑区别)

    笔记本电脑平板电脑都属于(笔记本电脑平板电脑区别)

  • 路由器dhcp关闭有什么影响(路由器DHCP关闭了怎么打开)

    路由器dhcp关闭有什么影响(路由器DHCP关闭了怎么打开)

  • 暂时无法接通或已关机是什么意思

    暂时无法接通或已关机是什么意思

  • 爱奇艺登录失效是被踢了吗(爱奇艺登录失效是什么意思)

    爱奇艺登录失效是被踢了吗(爱奇艺登录失效是什么意思)

  • 已经连接不可上网是什么意思(已经连接不可上网了)

    已经连接不可上网是什么意思(已经连接不可上网了)

  • ipad怎么退出qq(iPad怎么退出QQ登录)

    ipad怎么退出qq(iPad怎么退出QQ登录)

  • 微信闪图怎么发送(微信怎么看原图照片)

    微信闪图怎么发送(微信怎么看原图照片)

  • 苹果xr怎么一键加速(苹果xr怎么一键锁屏)

    苹果xr怎么一键加速(苹果xr怎么一键锁屏)

  • 计算机中数据编码最小单位是(计算机中数据编码是什么)

    计算机中数据编码最小单位是(计算机中数据编码是什么)

  • 苹果8p手机信号不好怎么回事(苹果8p手机信号接收器在哪里)

    苹果8p手机信号不好怎么回事(苹果8p手机信号接收器在哪里)

  • 爱奇艺投屏怎么连播(爱奇艺投屏怎么关闭)

    爱奇艺投屏怎么连播(爱奇艺投屏怎么关闭)

  • 荣耀10怎样分屏操作(荣耀怎样分屏功能)

    荣耀10怎样分屏操作(荣耀怎样分屏功能)

  • dircolors命令  设置 ls 指令在显示目录或文件时所用的色彩(dir命令参数)

    dircolors命令 设置 ls 指令在显示目录或文件时所用的色彩(dir命令参数)

  • c语言中有哪些运算符(c语言中有哪些语句)

    c语言中有哪些运算符(c语言中有哪些语句)

  • 织梦dede:sql标签动态查询调用其它文章信息方法(织梦标签工具)

    织梦dede:sql标签动态查询调用其它文章信息方法(织梦标签工具)

  • 税务师考试需要记忆的税率
  • 增值税销项税额账务处理
  • 结转应交增值税到未交增值税
  • 个人劳务费的免税政策
  • 未休年假补助
  • 按季度申报,利润表中所得税费用怎么算出来的
  • 互联网公司成本包括哪些
  • 分公司独立核算企业所得税缴纳
  • 公司股东没有认缴资金
  • 纳税人在什么情况下可以延期申报
  • 增值税专票逾期抵扣怎么操作
  • 基本户收到零余额转款怎么做分录
  • 抵押车贷款会不会扣车
  • 合同和付款单位不一致发票应该开给谁
  • 增值税免税收入汇算清缴的时候填哪
  • 对外出租设备
  • 劳务外包业务外包的区别
  • 土地契税及印花税缴纳规定
  • 招标文件中资金性质应填什么
  • 进料进口
  • 利息收入营业收入
  • centos 6.5安装教程
  • 装win7ahci
  • 定额发票收入怎么样确定
  • 交易性金融资产公允价值变动怎么算
  • php array数组
  • hbuilderx怎么运行代码
  • php统计字符串长度
  • 最快的XQD存储卡是什么
  • 差旅费的会计分录怎么做
  • 麦地那老城
  • 对于小型微利企业的建议
  • 公司车辆使用费用平均
  • 年报写歇业 可以写多久
  • vscode的常用插件
  • vue组件通信方法
  • python用内置函数来打开文件
  • 发票货物或应税劳务名称怎么填写
  • 理财产品利息计算方法
  • 认证系统维护费怎么算
  • 煤炭企业所得税税率新疆
  • 疫情期间制造费用账务处理
  • 机械设备预付款比例
  • 材料估价入库发票收到如何记账
  • 研发产品收入的会计分录
  • 单位注销合并劳动合同有效吗
  • 房地产开发企业与转让房地产有关的税金
  • 机票行程单如何看座位等级
  • 退资本金现金流量表走哪一项
  • 应付账款怎么记账
  • mysql源码编译
  • sqlserver2005iis警告
  • sqlserver数据完整性
  • win8.1系统安装教程
  • Win Server 2003 使用技巧图解
  • 如何安装vmware10
  • vrvarp.exe是什么
  • window8系统更新
  • win8.1无法启动
  • window10通知
  • win10version最新版本
  • 如何给win7系统升级
  • perl如何使用
  • jquery跳出循环
  • cocos2d-x教程
  • unity怎么做触屏按键
  • 写个置顶
  • 安卓icon图标
  • nodejs如何使用
  • python 聚类算法包
  • jquery实现div左右移动
  • 20行的python编程题
  • Unity3D游戏开发毕业论文
  • 现在的微信怎么用脚本登陆了
  • 惠州市房产交易税费征收标准
  • 兼营增值税应税项目和免税项目
  • 人均可支配收入是到手工资吗
  • 新三步走和旧三步走的异同点
  • 政府收回土地条件
  • 福建是高原还是平原
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设