介绍

全栈团队的成员属于全栈型,每个成员均可以独立开发一个业务模块的前后端代码。那么,这时候我们就可以基于CabloyJS项目模块化体系的特点,进行分工合作

场景

假如我们有一个项目cabloy-demo,可以将业务所涉及的前端界面和后端逻辑拆分为两个业务模块,分别是demo-moduleademo-moduleb,分别由成员A成员B开发,最后由成员C部署

成员 任务
成员A 开发demo-modulea
成员B 开发demo-moduleb
成员C 部署

代码分割

1. 创建项目

  • 选项1:由任何成员创建一个项目骨架(项目名称为cabloy-demo),然后分发给其他成员

  • 选项2:成员独立创建项目骨架

  1. 1$ npm init cabloy cabloy-demo

2. 成员A

在自己的项目中创建业务模块demo-modulea,并进行代码开发

  1. 1$ npm run cli :create:module demo-modulea -- --template=module-business --suite=

3. 成员B

(参考成员A)

成果分享

1. 成员A

在终端执行release命令,将demo-modulea编译打包,并将输出成果分享给成员B成员C

  1. 1$ npm run release demo-modulea

2. 成员B

(参考成员A)

代码调试

1. 常规场景

由于成员之间的业务模块可以进行成果分享,因此,成员可以独立的进行代码调试

2. 兼容场景

由于一个业务模块包含与某项子业务相关的前端组件和后端逻辑,因此往往是高内聚低耦合的。在其他成员的业务模块还没有准备就绪的时候,本地一般情况也可以进行正常的代码调试。如果模块之间确实存在相互依赖,可以采用模块检测机制进行兼容处理

比如,模块demo-moduleb依赖模块demo-modulea。我们可以在模块demo-moduleb中加入兼容代码,从而确保即使没有模块demo-modulea,本地代码也可以正常运行

  • 前端兼容处理
  1. 1const exists = await this.$meta.module.tryUse('demo-modulea');
  2. 2if(!exists){
  3. 3 // 兼容处理
  4. 4}
  • 后端兼容处理
  1. 1const exists = ctx.app.meta.modules['demo-modulea'];
  2. 2if(!exists){
  3. 3 // 兼容处理
  4. 4}

项目部署

成员A成员B把各自的业务模块编译打包之后,统一分享给成员C成员C进行常规的部署工作