总结:vue2 和 vue3 的区别
1. 区别
(1)双向数据绑定原理不同,vue2利用了ES5的API Object.defineProperty(),vue3利用ES6的API Proxy
详细:vue2利用Object.defineProperty()对数据进行劫持,并且结合发布订阅模式来实现,vue3利用了Proxy对数据代理
优点:Object.defineProperty()只能监听某个属性,不能对全对象进行监听
可以省去for in,闭包等内容来提升效率(直接绑定整个对象即可)
可以监听数组,不用再去对数组进行特异性操作,vue3可以检测到数组内部数据的变化
(2)vue3支持碎片,vue2不支持
详细:vue3组件可以有多个根节点,vue2只能有一个
(3)vue3使用合成型API(Composition API),vue2使用的是选项型API(Options API)
详细:vue2的选项型API在代码里分割了不同的属性(data,computed,methods等),vue3的合成型API能让我们用方法(function)来分割,相比于vue2的使用属性来分组,vue3代码会更加简便和整洁
(4)建立数据,vue3使用setup()方法,vue2直接把数据放在data属性中
详细:vue2中数据直接放在data里,vue3中我们用setup()方法,此方法在组件初始化构造的时候触发,
vue3建立反应性数据的步骤:
1)从vue3中引入reactive
2)使用reactive()方法来声明我们的数据为响应性数据
3)使用setup方法来返回我们的响应性数据
(5)生命周期勾子
(6)父子传参不同,setup()函数特性
详细:
1)setup()函数,接收两个参数(props, context(包含 attrs, slots, emit))
2)setup函数是处在 befortCreate和created两个勾子之前的函数,执行 setup() 时,组件尚未被创建,所以this并不是指向vue,Vue为了避免错误的使用,直接将setup函数内部的this改成了undefined
3)vue3.2之前,在setup() 函数中定义的 变量和方法最后都是需要return出去的,不然无法在模版中使用
4)使用渲染函数:返回一个渲染函数,可以直接用在同一作用域中生命的响应式状态
注意事项:
1)setup() 中不能使用this
2)setup() 中的 props 是响应式的,props更新时,因为是响应式的,所以不能用ES6去解构,因为会消除props的响应式,如果需要解构,需要使用vue 中的toRefs 来完成
3)vue3传参
4)setup() 中使用响应性数据的时候,需要通过 .value 使用数据,但是setup()返回的对象上的property返回在模版中使用的时候,将自动展开内部值,不需要在模版中追加.value
5)setup() 只能同步不能异步
(7)vue3有Teleport组件,vue2没有。
详细:vue3有瞬移组件,也是一个独立组件,可以把你写的组件挂在到任何你想挂载的DOM上,所以也称为独立组件
如果以之前vue2的方式引入,他跟普通的组件是一样的,但是父组件的DOM结构和css都可能对组件产生影响,为了解决这种问题,我们要用Teleport,像是一个传送门,把组件传送到任何地方。
使用方法:
1)在根目录下的index.html文件中添加一个id节点
2)使用 to属性 挂在到DOM节点下面
__EOF__

本文链接:https://www.cnblogs.com/liql/p/16915749.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!