问答

[设计模式相关] 在Vue 3 Composition API中使用Class是不是可行

作者:admin 2021-04-20 我要评论

现在假定在vue某组件里,比如有3个子Dialog组件,各有用途。 先说我 选项式API 里,我会这么简单归类一下: data: { return { aDialog: { title: 'xxx', opened:...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

现在假定在vue某组件里,比如有3个子Dialog组件,各有用途。

先说我选项式API里,我会这么简单归类一下:

data: {
  return {
    aDialog: {
      title: 'xxx',
      opened: false,
      ......
    },
    bDialog: {
      title: 'xxx',
      opened: false,
      ......
    },
    cDialog: {
      title: 'xxx',
      opened: false,
      ......
    },

  }
}

methods里也是这么归类,用函数柯里化,形成这种结构:

methods: {
  aDialog() {
    return {
      open() {
        ...
      }
    }
  },
  bDialog() {
    return {
      open() {
        ...
      }
    }
  },
  cDialog() {
    return {
      open() {
        ...
      }
    }
  },
}

组合式API里,首先说,由于目前Vue 3没有大规模应用,所以高阶文章不多,所以我问,如果考虑在组合式API里封装代码,让代码不乱、易维护,那么比较好的实践,是否可以考虑Class?

还是说,在组合式API里,只是用注释来分割成3片代码?每片代码里,写N行let,写N行function

/*
 * aDialog
 */

又或是说,在组合式API里,模仿选项式API,大对象套小对象,函数也柯里化?这样还是选项式API的长相,是不是失去了组合式API的优势?

###

首先呢,Class API已经被废弃了,但是还是提供了单独的依赖,可以以 Class 的形式来写项目。
具体可以看尤大以前的视频录播
Vue.js作者尤雨溪在 VueConf 谈 Vue 3.0 大概在20分30秒的位置有提到旧的 ,你可以看看,也提到了和现在 Composition API 的对比(当时还叫Function base api)

和react hooks差不多的感觉,你可以分离出来很多代码,然后UI只管UI,业务代码只管业务代码。

并不是说一定要用某种设计模式,而是根据不同场景来选择合适的设计模式

就比如说你有3个dialog,基本功能重复,但是部分业务逻辑可能不一样,那你把dialog抽离出来,再去对它们去修饰具体的业务逻辑就好了,就和现在的很多UI库所做的一样。

最后可以看下之前V3上线之前的直播录屏 Vue.js 作者谈 Vue 3.0 beta 现状

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • nginx响应速度很慢

    nginx响应速度很慢

  • 点击选中的多选框,会在已选那一栏显示

    点击选中的多选框,会在已选那一栏显示

  • PHP 多态的理解

    PHP 多态的理解

  • 关于C语言中static的问题

    关于C语言中static的问题

腾讯云代理商
海外云服务器