带你体验Vue2和Vue3开发组件的区别(一)

举报
青年码农 发表于 2022/08/25 01:10:19 2022/08/25
【摘要】 历经 13 个 RC 版本之后,Vue 团队于 2020 年 9 月 18 日晚 11 点半发布了 Vue 3.0 版本,等待了两年多的Vue 终于正式发布了 3.0 正式版本了! 现在的vue版本已经可以满足我们大部分开发场景,虽然Vue3正式版发布不久,可能存在某些问题,但是提前学习了解总归是有好处的。可能有些已经...

历经 13 个 RC 版本之后,Vue 团队于 2020 年 9 月 18 日晚 11 点半发布了 Vue 3.0 版本,等待了两年多的Vue 终于正式发布了 3.0 正式版本了!

现在的vue版本已经可以满足我们大部分开发场景,虽然Vue3正式版发布不久,可能存在某些问题,但是提前学习了解总归是有好处的。可能有些已经开始抓狂了,学不动了。

所以这里我们通过用脚手架创建的项目,对比这两个版本在开发组件上的区别。如果还不会创建Vue3项目,请移步记录使用@vue/cli搭建Vue3项目完整流程。记录完整的创建流程,今天我们的教程也是基于上次构建的项目。

1.template

标签模版这块,Vue2和Vue3区别不大,Vue3支持碎片(Fragments),就是说template下可以有多个根节点。

Vue2

Vue2 template下只能包含一个根节点。


   
  1. <template>
  2.   <div>
  3.     显示区域
  4.   </div>
  5. </template>

Vue3

Vue3 template下可以包含多个根节点。


   
  1. <template>
  2.   <div>显示区域</div>
  3.   <div>显示区域</div>
  4.   <div>显示区域</div>
  5. </template>


2.data

Vue2和Vue3区别很大,我们代码看。

Vue2

Vue2是选项类型API(Options API),在代码里分割了不同的属性(properties):data,computed属性,methods,等等。


   
  1. export default {
  2.   data () {
  3.     return {
  4.       userName: '',
  5.       password: ''
  6.     }
  7.   }
  8. }

Vue3

Vue3合成型API(Composition API),需要使用一个新的setup()方法,此方法在组件初始化构造的时候触发。


   
  1. import { reactive } from 'vue'
  2. export default {
  3.   setup () {
  4.     const data = reactive({
  5.       userName: '',
  6.       password: ''
  7.     })
  8.     return { data }
  9.   }
  10. }

3.methods

这个写法上也有很大区别。

Vue2

Vue2把methods分割到独立的属性区域。


   
  1. export default {
  2.   data () {
  3.     return {}
  4.   },
  5.   methods: {
  6.     // 方法
  7.     login () {}
  8.   }
  9. }

Vue3

Vue3不需要把方法写在methods内,在setup()方法中声明,最后返回(return)


   
  1. import { reactive } from 'vue'
  2. export default {
  3.   setup () {
  4.     const data = reactive({
  5.       userName: '',
  6.       password: ''
  7.     })
  8.     // 登陆方法
  9.     const login = () => {}
  10.     return { 
  11.       login,
  12.       data
  13.     }
  14.   }
  15. }

4.Lifecyle Hooks

这个区别也很大。

Vue2

Vue2可以直接在组件属性中调用Vue的生命周期的钩子。


   
  1. export default {
  2.   data () {
  3.     return {
  4.       userame: '',
  5.       password: ''
  6.     }
  7.   },
  8.   beforeCreate() {},
  9.   created() {},
  10.   beforeMount() {},
  11.   mounted() {},
  12.   beforeUpdate() {},
  13.   updated() {},
  14.   beforeDestroy() {},
  15.   destroyed() {}
  16. }

Vue3

Vue3 的合成型API里面的setup()方法可以包含了基本所有东西。生命周期的钩子就是其中之一。


   
  1. import { reactive, onMounted } from 'vue'
  2. export default {
  3.   setup () {
  4.     // ..
  5.     onMounted(() => {})
  6.     // ...
  7.   }
  8. }

与 2.x 版本生命周期相对应的组合式 API。


   
  1. 1、beforeCreate -> 使用 setup()
  2. 2、created -> 使用 setup()
  3. 3、beforeMount -> onBeforeMount
  4. 4、mounted -> onMounted
  5. 5、beforeUpdate -> onBeforeUpdate
  6. 6、updated -> onUpdated
  7. 7、beforeDestroy -> onBeforeUnmount
  8. 8、destroyed -> onUnmounted
  9. 9、errorCaptured -> onErrorCaptured

暂时先写到这,后期在介绍其他区别。有问题可以下方留言。

文章来源: blog.csdn.net,作者:NMGWAP,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/NMGWAP/article/details/125066860

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。