现在假定在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 现状