Skip to content

Commit 7c6cab3

Browse files
committed
【文档】更新核心逻辑实现文档
- 重构文档结构,优化标题层级 - 添加功能模块说明和核心流程图 - 详细描述内容加载、PJAX导航、翻译系统集成等关键逻辑 - 补充错误处理机制和动画状态同步说明 - 更新版本号至1.14.4
1 parent e8638bf commit 7c6cab3

2 files changed

Lines changed: 96 additions & 50 deletions

File tree

doc/logic.md

Lines changed: 95 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,106 @@
1-
# 流程图
1+
# 核心逻辑实现
22

3-
```mermaid
4-
graph TD
5-
A[页面加载] --> B{初始化}
6-
B --> B1[初始化PJAX]
7-
B --> B2[初始化翻译系统]
8-
B --> B3[初始化深色模式]
9-
B --> B4[初始化目录生成]
10-
B --> B5[自定义PJAX事件监听]
11-
A --> C[加载Markdown内容]
12-
C --> D{解析Markdown}
13-
D --> E[生成HTML内容]
14-
E --> F[处理链接路径]
15-
F --> G[插入DOM]
16-
G --> H[启动加载动画]
17-
H --> I[等待动画完成]
18-
I --> J[更新页面状态]
19-
J --> K[错误处理]
20-
K -->|成功| J
21-
K -->|失败| L[显示错误信息]
22-
A --> M[用户交互]
23-
M --> N{点击链接}
24-
N --> O[触发PJAX请求]
25-
O --> C
26-
```
3+
## 功能模块说明
274

285
```mermaid
296
classDiagram
30-
class MarkdownRenderer{
31-
+string mdPath
32-
+fetchMD()
33-
+parseContent()
34-
+generateOutline()
35-
+updateDOM()
7+
class ContentLoader {
8+
+showMarkdown(mdPath, response)
9+
+getMarkdown()
10+
+handleError()
11+
+updateContent()
3612
}
37-
class PJAXHandler{
38-
+handleNavigation()
39-
+animateTransition()
13+
class NavigationHandler {
14+
+initPJAX()
15+
+initCustomPJAXResponse()
16+
+initCustomPJAXEventListener()
17+
+customPushState()
4018
}
41-
class DarkMode{
42-
+toggleMode()
19+
class TranslationSystem {
20+
+initTranslate()
21+
+refreshTranslate()
22+
+infoTranslate()
4323
}
44-
class Translator{
45-
+translateContent()
46-
+detectLanguage()
24+
class UIStateManager {
25+
+loadingState 计数器
26+
+startLoad()
27+
+endLoad()
28+
+initDarkmode()
4729
}
48-
MarkdownRenderer --> PJAXHandler: 使用
49-
MarkdownRenderer --> DarkMode: 集成
50-
MarkdownRenderer --> Translator: 集成
30+
class PathProcessor {
31+
+decodeMDPath()
32+
+formatMDPath()
33+
+getDirectory()
34+
+isRelativePath()
35+
}
36+
37+
ContentLoader --> NavigationHandler : 使用PJAX导航
38+
ContentLoader --> PathProcessor : 路径处理
39+
ContentLoader --> TranslationSystem : 内容翻译
40+
NavigationHandler --> ContentLoader : 触发加载
41+
UIStateManager --> ContentLoader : 加载状态控制
42+
```
43+
44+
## 核心流程
45+
46+
```mermaid
47+
sequenceDiagram
48+
participant 用户
49+
participant 浏览器
50+
participant ContentLoader
51+
participant NavigationHandler
52+
53+
用户->>浏览器: 访问页面
54+
浏览器->>ContentLoader: DOMContentLoaded
55+
ContentLoader->>PathProcessor: decodeMDPath(URL)
56+
alt 路径有效
57+
ContentLoader->>ContentLoader: fetchMD(路径)
58+
ContentLoader->>ContentLoader: 解析 Markdown
59+
ContentLoader->>ContentLoader: 处理内部链接转换
60+
ContentLoader->>UIStateManager: startLoad()
61+
ContentLoader->>DOM: updateContent()
62+
ContentLoader->>TranslationSystem: 触发翻译
63+
ContentLoader->>UIStateManager: endLoad()
64+
else 路径无效
65+
ContentLoader->>PathProcessor: 尝试默认文件(index.md/README.md)
66+
ContentLoader->>UIStateManager: handleError()
67+
end
68+
69+
用户->>NavigationHandler: 点击 .md 链接
70+
NavigationHandler->>ContentLoader: 触发新内容加载
5171
```
5272

53-
## 核心流程说明
73+
## 关键逻辑说明
74+
75+
### 1. 内容加载流程 (`showMarkdown`)
76+
77+
- **路径解析**:通过 `decodeMDPath()` 解析URL参数
78+
- **文件获取**:优先尝试 `index.md`,失败后回退 `README.md`
79+
- **链接转换**:将文档内 `.md` 相对路径转换为绝对路径
80+
- **DOM更新**:使用 `updateContent()` 注入生成的HTML
81+
- **加载状态**:通过 `loadingState` 计数器管理进度条动画
82+
83+
### 2. PJAX导航系统
84+
85+
- **初始化**`initPJAX()` 配置选择器和切换规则
86+
- **自定义处理**:覆写`handleResponse` 实现 Markdown 渲染
87+
- **事件委托**:拦截 .md 链接点击事件触发无刷新加载
88+
- **状态管理**`customPushState()` 维护浏览历史层级
89+
90+
### 3. 翻译系统集成
91+
92+
- **自动检测**`setAutoDiscriminateLocalLanguage()` 设置语言
93+
- **DOM注入**`infoTranslate()` 插入语言切换提示条
94+
- **动态刷新**`refreshTranslate()` 处理动态内容翻译
95+
96+
### 4. 错误处理机制
97+
98+
- **分级捕获**:try/catch 块覆盖关键操作节点
99+
- **友好提示**`handleError()` 生成带操作按钮的错误界面
100+
- **状态恢复**:错误后自动回退到可用导航状态
101+
102+
### 5. 动画与状态同步
54103

55-
1. **初始化阶段**:加载所有依赖库并配置核心功能模块
56-
2. **内容加载**:通过fetch获取Markdown文件内容并解析
57-
3. **渲染流程**:生成HTML内容 -> 处理路径 -> 更新DOM -> 动画过渡
58-
4. **交互处理**:通过PJAX实现无刷新导航,触发新的加载流程
59-
5. **异常处理**:在关键节点捕获错误并显示友好提示
60-
6. **增强功能**:翻译系统与暗黑模式通过事件总线集成
104+
- **CSS动画**:使用 `Animated` 类实现页面过渡效果
105+
- **事件委托**:监听 `animationend` 事件清理DOM残留
106+
- **滚动管理**:内容加载后自动滚动到顶部

index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<!doctype html>
22

33
<html>
4-
<markdown-html version="1.14.3" author="PJ568" repo="https://github.com/PJ-568/markdown.html"
4+
<markdown-html version="1.14.4" author="PJ568" repo="https://github.com/PJ-568/markdown.html"
55
license="CC BY-SA 4.0 International"></markdown-html>
66

77
<head>

0 commit comments

Comments
 (0)