Files
bq_react/doc/项目文档/项目架构.md

4.2 KiB
Raw Blame History

项目架构

目录

项目目录结构

本仓库是脚手架。src/app 是每个项目保留的基础应用。src/features 下的四个目录是示例业务,用来示范功能模块如何接入;新项目可以替换它们。

src/
├── app/
│   ├── db/
│   ├── di/
│   ├── i18n/
│   ├── lifecycle/
│   ├── network/
│   ├── routes/
│   ├── session/
│   ├── theme/
│   ├── worker/
│   ├── entry.client.tsx
│   ├── root.tsx
│   └── routes.ts
├── assets/
└── features/
    ├── editor/
    ├── home/
    ├── project/
    └── security/

模块定义

src/app 下每个目录是一个基础应用,供功能模块和路由使用。src/features 下每个目录是一个功能模块,承载一块业务。功能模块的定义写它的 application 用例。

基础应用

模块 目录 定义
数据库 src/app/db 打开本地库并按版本升级表结构
依赖注入 src/app/di 提供根容器,并把端口绑定到实现
国际化 src/app/i18n 注册文案并按当前语言取出文本
生命周期 src/app/lifecycle 创建页面 ViewModel,并在进入、刷新、离开时回调
网络 src/app/network 提供 HTTP 客户端,附带凭证并处理 401
路由 src/app/routes 把 URL 指到页面,并按会话决定能否进入
会话 src/app/session 保存、读取、清除登录凭证,并通知登录态变化
主题 src/app/theme 解析当前主题,并交给界面库
线程脚本 src/app/worker 封装 Worker 的消息会话

功能模块

模块 目录 定义
编辑器 src/features/editor 把指针和当前工具提交给项目聚合,不持有文档规则
首页 src/features/home 不持有独立用例,调用项目模块按存储位置列出与新建
项目 src/features/project 维护项目聚合:创建、列出、读取、保存,以及落笔、撤销和重做
安全 src/features/security 提供身份用例:注册、登录和登出。登录得到 User

模块间数据流

项目业务

flowchart LR
  security
  home
  project
  editor

  security -->|authenticated| home
  home -->|list / create| project
  project -->|projectId / store| home
  home -->|projectId / store| editor
  editor -->|get / save| project

home 先读取 security 的 authenticated。已登录时,home 通过 list 或 create 向 project 要项目,拿到 projectId 和 store 后再交给 editor。未登录时,projectId 无法流转至 editor。

store 只表示应用层选择本地仓储还是远程仓储,不是 Project 的字段。进入 editor 后,get 载入聚合。落笔、撤销和重做由 Project 执行,再经 save 写回。