Skip to content

Commit 5b82061

Browse files
committed
docs: add ARCHITECTURE_zh-CN.md
1 parent 104c047 commit 5b82061

File tree

2 files changed

+72
-10
lines changed

2 files changed

+72
-10
lines changed
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
# 🧱 项目架构
2+
3+
**如果你想要二次开发、新增特性或修复 Bug,建议阅读本文档,以便更好地理解项目结构和实现逻辑。**
4+
5+
## 📁 目录结构
6+
7+
项目 UI 层由一个浮动入口 `dock` 和一个包含多个功能面板的侧边 `panel` 组成:
8+
9+
```mermaid
10+
graph TB
11+
A[Generator] --> B[float-dock]
12+
A[Generator] --> C[panel-drawer]
13+
14+
C[panel-drawer] --> D[color-panel]
15+
C[panel-drawer] --> E[font-panel]
16+
C[panel-drawer] --> F[shadow-panel]
17+
C[panel-drawer] --> G[radius-panel]
18+
C[panel-drawer] --> H[size-panel]
19+
```
20+
21+
项目还包含两个文件夹:
22+
23+
```mermaid
24+
graph TB
25+
A[styles] --> B["*.min.css 样式文件"]
26+
27+
C[common] --> D[components 通用组件]
28+
C[common] --> E[i18n 国际化]
29+
C[common] --> F[theme 主题核心<br>(包括内置主题模板和颜色算法等实现)]
30+
C[common] --> G[utils 工具函数]
31+
32+
classDef themeFill fill:#e6f7ff,stroke:#1890ff,stroke-width:2px;
33+
class F themeFill
34+
```
35+
36+
`*.min.css` 文件来自 `tdesign-vue` 且经过二次压缩
37+
- 额外添加了 `:host` 选择器,确保 Web Components 打包后样式正常
38+
- 移除颜色相关的 token,使主题生成器能与外部主题色直接同步
39+
40+
## 🧚 交互逻辑
41+
42+
### 数据持久化
43+
44+
1. `custom-theme-options`
45+
46+
| Key | 类型 | 示例 |
47+
| ----------------------------- | -------------------------- | --------------------- |
48+
| `theme` | 主题 | `TCloud` |
49+
| `color` | 主题色 | `#45C58B` |
50+
| `gray/success/warning/danger` | 功能色的品牌色 | `#2ba471` |
51+
| `font/radius/shadow` | 预设步骤中的位置 | `1` |
52+
| `line-height` | 固定模式或递增模式及其参数 | `plus_9` / `time_1.5` |
53+
| `recommend` | 智能推荐 | `true` |
54+
| `neutral` | 关联主题色 | `true` |
55+
56+
2. `custom-theme-tokens`:各种 `--td-*` token,主要来自用户手动修改单个变量的操作
57+
58+
### 执行流程
59+
60+
1. **初始化**:根据本地存储的 `theme`(或默认主题),进行 CSS 模板挂载
61+
62+
2. **配置恢复**:读取本地存储的 `tokens`,并还原用户的自定义修改
63+
64+
3. **面板渲染**:各个 Panel 根据 `options` 确定初始数值
65+
66+
## 😈 开发规范
67+
68+
1. **常量管理**:使用 `UPPER_CASE` 命名方式,独立存放在 JS 文件中,与 Vue 逻辑分离
69+
70+
2. **全局状态管理**:避免通过 props 层层传递共享变量,优先使用 `inject``mixin``store` 管理
71+
72+
3. **动态编码管理**:避免硬编码数值,特别是 Token 相关的映射,优先从 CSS 中获取配置

packages/theme-generator/src/README.md

Lines changed: 0 additions & 10 deletions
This file was deleted.

0 commit comments

Comments
 (0)