- 策划一名
- 前端两名
- 后端两名
- 对接一名
central-control-screen/
├── commons/ // [公共能力层] 存放基础公共代码,无业务属性
│ ├── uicomponents/ // 通用UI组件库,比如自定义的滚动条
│ └── utils/ // 基础工具类 (如: LogUtil, DateUtil, HttpUtil)
│ └── src/main/ets/
│ └── database/ // [数据库层] 统一的本地数据库管理 (AppDatabase.ets)
│
├── features/ // [特性业务层] 独立的业务模块,高内聚低耦合
│ ├── health/ // [健康监测模块] 负责体征数据与运动管理
│ │ ├── src/main/ets/
│ │ │ ├── model/ // 数据模型 (如: HealthDataModel.ts - 定义心率/血压结构)
│ │ │ ├── viewmodel/ // 业务逻辑 (如: HealthViewModel.ts - 获取/处理健康数据)
│ │ │ └── pages/ // 页面组件 (如: WellnessPage.ets - 居家康养, SportsPage.ets - 运动健康)
│ │ └── index.ets // 模块导出文件 (对外暴露 Page 和 Card 组件)
│ │
│ ├── medical/ // [智慧医疗模块] 负责在线问诊与呼叫服务
│ │ ├── src/main/ets/
│ │ │ ├── model/ // 数据模型 (如: DoctorModel.ts - 医生信息结构)
│ │ │ ├── viewmodel/ // 业务逻辑 (如: DoctorViewModel.ts - 医生列表/呼叫状态管理)
│ │ │ └── pages/ // 页面组件 (如: CallPage.ets - 一键呼叫, ConsultationPage.ets - 在线问诊)
│ │ └── index.ets // 模块导出文件
│ │
│ └── mainpage/ // [主页模块] 负责应用首页的布局与交互
│ ├── src/main/ets/
│ │ ├── viewmodel/ // HomeViewModel (负责聚合各模块入口数据)
│ │ └── pages/ // Index.ets (主页布局,引入其他 Feature 的 Card)
│ └── index.ets // 模块导出文件
│
└── products/ // [产品集成层] 应用入口,组装各个 Feature
└── default/ // [Default Product] 默认产品入口
├── src/main/ets/
│ ├── entryability/ // 应用生命周期入口 (EntryAbility.ts - 初始化数据库)
│ ├── entrybackupability/ // 应用备份恢复逻辑
│ └── pages/ // (入口页面,通常直接引用 mainpage 模块的 Index)
└── oh-package.json5 // 依赖配置 (引入 commons, features/health, features/medical, features/mainpage)
在每个 Feature 模块的 index.ets 中,必须显式导出外部需要使用的组件或页面。
- 示例:
// features/health/index.ets export { WellnessCard } from './src/main/ets/components/WellnessCard'; export { WellnessPage } from './src/main/ets/pages/WellnessPage';
- 模块私有资源:
features模块里的图片/字符串最好放在自己的src/main/resources下,保持模块独立性。 - 公共资源:
commons里的通用图片(如返回图标、Logo)可以被所有模块引用。
- Entry 依赖:记得在
products/entry/oh-package.json5中添加对所有features模块的依赖。 - Feature 依赖:记得在各个
features模块中添加对commons模块的依赖。
为了避免多人开发时的冲突,请遵守以下约定:
- 严禁随意修改顶层目录:
commons,features,products这三层结构是项目基石,未经全组讨论,禁止增加、删除或重命名这三层目录。 - 模块内部自治:
- 在各自负责的
features模块内部(如features/health),负责人可以自由新增文件夹(如components/charts),但请保持model/view/viewmodel的分层习惯。
- 在各自负责的
- 公共区修改慎重:
- 删除前检查:在删除
commons中的任何文件前,必须进行全局搜索,确保没有其他模块正在引用它。 - 新增通用组件:如果你写了一个组件觉得大家都能用,请先放在自己的模块里,确认通用性后再迁移到
commons,并通知所有人。
- 删除前检查:在删除
- 命名规范:
- 文件夹:使用小驼峰命名 (camelCase),如
viewmodel,utils。 - ETS组件/页面:使用大驼峰命名 (PascalCase),如
WellnessCard.ets,Index.ets。 - 资源文件:使用下划线命名 (snake_case),如
ic_back.png,bg_home.jpg。
- 文件夹:使用小驼峰命名 (camelCase),如