目录与命名规范
Feature 层文件全部位于 feature/。每个功能模块(示例:auth、main、user)都应保持一致的目录层级,便于多人协作时快速定位文件。
基础目录结构
feature/
├── auth/
│ ├── navigation/ # 页面入口与 Graph 注册
│ ├── viewmodel/ # 与页面一一对应的 ViewModel
│ ├── view/ # 页面视图
│ ├── model/ # 模块内数据模型或 UI 模型
│ └── component/ # (可选) 模块内复用的 UI 片段
├── main/
│ └── ...
└── user/
└── ...
component/目录可选,仅当模块内有可复用 UI 时才创建,避免空目录。
命名规范
文件与目录
- 模块名全部小写,例如
feature/goods。 - 页面文件:
*Page.ets,如GoodsListPage.ets。 - ViewModel:
*ViewModel.ets,如GoodsListViewModel.ets。 - 页面入口:
*Nav.ets,如GoodsListNav.ets。 - 模块 Graph:
*Graph.ets,如GoodsGraph.ets。 - 路由常量:
*Routes.ts,如GoodsRoutes.ts。
职责约定
navigation/只放路由入口与 Graph 注册,不写业务逻辑。view/只负责渲染与布局。viewmodel/只负责状态与业务逻辑。model/放页面或模块内的数据结构。
示例:Main 模块
feature/main 当前结构如下,可作为基线:
main/
├── navigation/
│ ├── MainGraph.ets
│ └── MainNav.ets
├── view/
│ └── MainPage.ets
├── viewmodel/
│ └── MainViewModel.ets
└── model/
└── NavigationCardItem.ets若新增“商品”模块,可仿照上面结构创建 feature/goods/...,并在 EntryAbility 中注册 GoodsGraph。
校验清单
- [ ] 模块目录与
auth/main/user保持一致,不额外嵌套奇怪层级。 - [ ] 文件命名遵循
*Page.ets / *ViewModel.ets / *Graph.ets。 - [ ] Graph 只负责注册路由,业务逻辑在 ViewModel 与页面中处理。