直接跳到内容

目录与命名规范

Feature 层文件全部位于 feature/。每个功能模块(示例:authmainuser)都应保持一致的目录层级,便于多人协作时快速定位文件。

基础目录结构

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 与页面中处理。