33 lines
1.9 KiB
Markdown
33 lines
1.9 KiB
Markdown
# 项目架构文档撰写说明
|
|
|
|
适用文件:`doc/项目架构.md`。
|
|
|
|
## 目录
|
|
|
|
- [1. 项目目录结构](#1-项目目录结构)
|
|
- [2. 模块定义](#2-模块定义)
|
|
- [3. 模块间数据流](#3-模块间数据流)
|
|
|
|
示例见 [项目架构(示例)](./项目架构(示例).md)。
|
|
|
|
## 1. 项目目录结构
|
|
|
|
用目录树写出 `src`。`src/app` 展开到每个基础应用目录。`src/features` 展开到 `features/[feature]`,不写模块内部。
|
|
|
|
模块内部目录由功能模块文档写。基础应用内部文件由使用示例和数据流体现。
|
|
|
|
## 2. 模块定义
|
|
|
|
先用一段话定义本仓库的模块:`src/app/<目录>` 是基础应用,`src/features/<目录>` 是功能模块。
|
|
|
|
然后分「基础应用」「功能模块」两张表。每行:名称、目录、这个模块做什么。表中的目录与上一节一致,不多出、不漏掉。
|
|
|
|
功能模块的定义写 application 层的业务,也就是该模块对外提供的用例。不写页面上的操作,不写 ViewModel。ViewModel 是页面业务,放在功能模块文档。模块没有自己的 application 时,写明它不持有独立用例,以及它调用哪个模块的用例。
|
|
|
|
## 3. 模块间数据流
|
|
|
|
只画功能模块之间的业务数据。节点是 `home`、`security`、`project`、`editor`。箭头文字使用在模块之间传递的方法名或字段名,例如 `list`、`projectId`。中文写在图下。
|
|
|
|
不画基础应用,例如 `session`、`network`、`db`、`routes`。不画时序,不写类内部的调用步骤。基础应用内部的数据流和时序写在基础应用文档。功能模块内部的时序写在功能模块文档。
|
|
|
|
一条业务一张图。图下用几句话说明业务数据从哪个功能模块到哪个功能模块。决定下游数据能否继续流动的状态必须画出来。例如 `home` 先取得 `security` 的 `authenticated`,才从 `project` 取得 `projectId`,再交给 `editor`。 |