对比Vue2中Options API 和 Vue3中Composition API

举报
青年码农 发表于 2022/08/24 23:31:51 2022/08/24
【摘要】 1 Options API Options API 可以翻译为选项API,字面意思可供使用者挑拣的分类条目,就是框架定义好选项,我们可以把我们的功能写在选项里,如props 里面设置接收参数、data 里面设置变量、computed 里面设置计算属性、watch 里面设置监听属性、methods 里面设置事件方法你会发现 Opt...

1 Options API

Options API 可以翻译为选项API,字面意思可供使用者挑拣的分类条目,就是框架定义好选项,我们可以把我们的功能写在选项里,如props 里面设置接收参数、data 里面设置变量、computed 里面设置计算属性、watch 里面设置监听属性、methods 里面设置事件方法你会发现 Options APi 都约定了我们该在哪个位置做什么事。


   
  1. export default {
  2.   name: 'index',
  3.   data() {
  4.     return {}
  5.   },
  6.   watch: {},
  7.   components: {},
  8.   created() {},
  9.   methods: {},
  10.   computed: {}
  11. }

缺点: 一个功能往往需要在Vue不同的配置项中定义属性和方法,比较分散,如果项目比较小,组件逻辑功能不多,代码结构还能保持清晰明了,但是项目大了后,一个methods中可能包含多个方法甚至几十个方法,你往往分不清哪个方法对应哪个功能,耦合度相对较高。

2 Composition API

Composition API 可以理解为组合API,一个小功能的api都会放到一起,下面一个简单的例子,可能运行会报错,这里只是演示写法。


   
  1. export default {
  2.   setup(props, context) {
  3.     // 用户登录
  4.     const login = reactive({ login: "1" });
  5.     // 登录验证
  6.     const loginonSubmit = e => {
  7.       e.preventDefault();
  8.       validate()
  9.         .then(() => {})
  10.         .catch(err => {});
  11.     };
  12.     // 用户注册
  13.     const registered = reactive({ registered: "1" });
  14.     const registeredonSubmit = e => {
  15.       e.preventDefault();
  16.       validate()
  17.         .then(() => {})
  18.         .catch(err => {});
  19.     };
  20.     return {
  21.       login 
  22.       loginonSubmit ,
  23.       registered ,
  24.       registeredonSubmit 
  25.     };
  26.   }
  27. };

Composition API 根据逻辑相关性组织代码,提高可读性和可维护性,这样做,即时项目很大,功能很多,我们都能快速的定位到这个功能所用到的所有API。

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

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

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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