md2ui 1.0.18 → 1.0.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +51 -58
- package/bin/build.js +95 -9
- package/bin/md2ui.js +102 -13
- package/package.json +24 -10
- package/public/docs/00-/345/277/253/351/200/237/345/274/200/345/247/213.md +48 -28
- package/public/docs/01-/345/212/237/350/203/275/347/211/271/346/200/247.md +55 -40
- package/public/docs/02-Markdown/346/270/262/346/237/223/00-/345/237/272/347/241/200/350/257/255/346/263/225.md +88 -0
- package/public/docs/02-Markdown/346/270/262/346/237/223/01-/344/273/243/347/240/201/345/235/227.md +91 -0
- package/public/docs/02-Markdown/346/270/262/346/237/223/02-/350/241/250/346/240/274.md +187 -0
- package/public/docs/02-Markdown/346/270/262/346/237/223/03-Mermaid/345/233/276/350/241/250.md +101 -0
- package/public/docs/02-Markdown/346/270/262/346/237/223/04-Frontmatter.md +32 -0
- package/public/docs/02-Markdown/346/270/262/346/237/223/05-/346/225/260/345/255/246/345/205/254/345/274/217.md +47 -0
- package/public/docs/02-Markdown/346/270/262/346/237/223/06-Mermaid/345/244/215/346/235/202/345/233/276/350/241/250/346/265/213/350/257/225.md +1376 -0
- package/public/docs/02-Markdown/346/270/262/346/237/223/assets/img-1777383093712.png +0 -0
- package/public/docs/03-/345/257/274/350/210/252/344/270/216/345/270/203/345/261/200/00-/344/270/211/346/240/217/345/270/203/345/261/200.md +33 -0
- package/public/docs/03-/345/257/274/350/210/252/344/270/216/345/270/203/345/261/200/01-/347/233/256/345/275/225/346/240/221/345/257/274/350/210/252.md +43 -0
- package/public/docs/03-/345/257/274/350/210/252/344/270/216/345/270/203/345/261/200/02-/346/226/207/346/241/243/345/244/247/347/272/262.md +51 -0
- package/public/docs/03-/345/257/274/350/210/252/344/270/216/345/270/203/345/261/200/03-/344/270/212/344/270/213/347/257/207/345/257/274/350/210/252.md +29 -0
- package/public/docs/03-/345/257/274/350/210/252/344/270/216/345/270/203/345/261/200/04-/347/253/231/345/206/205/351/223/276/346/216/245.md +39 -0
- package/public/docs/03-/345/257/274/350/210/252/344/270/216/345/270/203/345/261/200/05-/345/244/247/347/272/262/345/216/213/345/212/233/346/265/213/350/257/225.md +340 -0
- package/public/docs/04-/346/220/234/347/264/242/345/212/237/350/203/275/00-/345/205/250/346/226/207/346/220/234/347/264/242.md +46 -0
- package/public/docs/05-/347/274/226/350/276/221/345/212/237/350/203/275/00-/347/274/226/350/276/221/345/231/250/345/237/272/347/241/200.md +65 -0
- package/public/docs/05-/347/274/226/350/276/221/345/212/237/350/203/275/01-/350/207/252/345/212/250/344/277/235/345/255/230.md +38 -0
- package/public/docs/06-/351/230/205/350/257/273/344/275/223/351/252/214/00-/351/230/205/350/257/273/350/277/233/345/272/246.md +43 -0
- package/public/docs/06-/351/230/205/350/257/273/344/275/223/351/252/214/01-/345/233/276/347/211/207/346/224/276/345/244/247.md +40 -0
- package/public/docs/06-/351/230/205/350/257/273/344/275/223/351/252/214/02-/350/277/224/345/233/236/351/241/266/351/203/250.md +38 -0
- package/public/docs/06-/351/230/205/350/257/273/344/275/223/351/252/214/assets/img-1777261394722.png +0 -0
- package/public/docs/07-/347/247/273/345/212/250/347/253/257/351/200/202/351/205/215/00-/345/223/215/345/272/224/345/274/217/345/270/203/345/261/200.md +37 -0
- package/public/docs/08-/346/226/207/346/241/243/347/256/241/347/220/206/00-/346/226/260/345/273/272/344/270/216/345/210/240/351/231/244.md +47 -0
- package/public/docs/09-/345/257/274/345/207/272/345/212/237/350/203/275/00-/345/257/274/345/207/272Word.md +77 -0
- package/public/docs/10-/351/203/250/347/275/262/344/270/216/351/205/215/347/275/256/00-CLI/345/267/245/345/205/267.md +52 -0
- package/public/docs/10-/351/203/250/347/275/262/344/270/216/351/205/215/347/275/256/01-SSG/351/235/231/346/200/201/346/236/204/345/273/272.md +44 -0
- package/public/docs/10-/351/203/250/347/275/262/344/270/216/351/205/215/347/275/256/02-/350/207/252/345/256/232/344/271/211/351/205/215/347/275/256.md +58 -0
- package/public/docs/11-/345/244/232/347/272/247/347/233/256/345/275/225/346/265/213/350/257/225/00-/344/270/200/347/272/247/346/226/207/346/241/243.md +20 -0
- package/public/docs/11-/345/244/232/347/272/247/347/233/256/345/275/225/346/265/213/350/257/225/01-/345/255/220/347/233/256/345/275/225/00-/344/272/214/347/272/247/346/226/207/346/241/243.md +13 -0
- package/public/docs/11-/345/244/232/347/272/247/347/233/256/345/275/225/346/265/213/350/257/225/01-/345/255/220/347/233/256/345/275/225/01-/346/267/261/345/261/202/345/265/214/345/245/227/00-/344/270/211/347/272/247/346/226/207/346/241/243.md +23 -0
- package/src/App.vue +111 -12
- package/src/components/AppSidebar.vue +181 -21
- package/src/components/CodeBlockNodeView.vue +72 -0
- package/src/components/DocContent.vue +25 -14
- package/src/components/EditorContent.vue +257 -0
- package/src/components/EditorToolbar.vue +264 -0
- package/src/components/ImageZoom.vue +88 -5
- package/src/components/MathBlockNodeView.vue +160 -0
- package/src/components/MathInlineNodeView.vue +145 -0
- package/src/components/MermaidNodeView.vue +157 -0
- package/src/components/MobileSearch.vue +97 -0
- package/src/components/TableOfContents.vue +174 -32
- package/src/components/TopBar.vue +69 -4
- package/src/components/TreeNode.vue +232 -39
- package/src/components/WelcomePage.vue +2 -2
- package/src/composables/useDocHash.js +9 -1
- package/src/composables/useDocManager.js +452 -105
- package/src/composables/useDocTree.js +33 -2
- package/src/composables/useExportWord.js +73 -10
- package/src/composables/useFileWatcher.js +45 -0
- package/src/composables/useFrontmatter.js +2 -2
- package/src/composables/useMarkdown.js +450 -52
- package/src/composables/useMermaidCache.js +15 -0
- package/src/composables/useScroll.js +354 -27
- package/src/composables/useSearch.js +12 -11
- package/src/config.js +1 -4
- package/src/extensions/CodeBlockCustom.js +113 -0
- package/src/extensions/MathBlock.js +107 -0
- package/src/extensions/MathInline.js +100 -0
- package/src/extensions/MermaidBlock.js +73 -0
- package/src/extensions/TableControls.js +670 -0
- package/src/services/DocService.js +168 -0
- package/src/style.css +2416 -36
- package/src/utils/imageConverter.js +129 -0
- package/vite-plugin-doc-api.js +369 -0
- package/vite.config.js +7 -2
- package/public/docs/02-Mermaid/345/233/276/350/241/250.md +0 -102
- package/public/docs/03-/350/277/233/351/230/266/346/214/207/345/215/227/01-/347/233/256/345/275/225/347/273/223/346/236/204.md +0 -55
- package/public/docs/03-/350/277/233/351/230/266/346/214/207/345/215/227/02-/350/207/252/345/256/232/344/271/211/351/205/215/347/275/256.md +0 -63
- package/public/docs/03-/350/277/233/351/230/266/346/214/207/345/215/227/03-/351/203/250/347/275/262/346/226/271/346/241/210.md +0 -73
- package/public/docs/04-API/345/217/202/350/200/203/01-/347/273/204/344/273/266API.md +0 -80
- package/public/docs/04-API/345/217/202/350/200/203/02-Composables.md +0 -92
- package/src/api/docs.js +0 -106
- package/src/components/SearchPanel.vue +0 -90
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# 阅读进度
|
|
2
|
+
|
|
3
|
+
验证阅读进度条和阅读时间显示功能。
|
|
4
|
+
|
|
5
|
+
## 进度条
|
|
6
|
+
|
|
7
|
+
- 右下角浮动按钮显示当前滚动百分比(如 42%)
|
|
8
|
+
- 滚动超过 300px 后按钮出现
|
|
9
|
+
- 点击按钮返回顶部(平滑滚动)
|
|
10
|
+
|
|
11
|
+
## 阅读时间
|
|
12
|
+
|
|
13
|
+
文档标题下方显示元信息:
|
|
14
|
+
|
|
15
|
+
- 字数统计(去除 frontmatter、代码块、HTML 标签后计算)
|
|
16
|
+
- 预计阅读时间(中文 400 字/分钟,英文 200 词/分钟)
|
|
17
|
+
|
|
18
|
+
## 填充内容
|
|
19
|
+
|
|
20
|
+
以下为填充内容,用于测试滚动进度计算。
|
|
21
|
+
|
|
22
|
+
### 第一章
|
|
23
|
+
|
|
24
|
+
在软件开发领域,文档的重要性不言而喻。一份好的文档不仅能帮助开发者快速上手项目,还能降低团队沟通成本,提高协作效率。Markdown 作为一种轻量级标记语言,因其简洁的语法和良好的可读性,已经成为技术文档的事实标准。
|
|
25
|
+
|
|
26
|
+
### 第二章
|
|
27
|
+
|
|
28
|
+
md2ui 的设计理念是"零配置即可使用"。只需一行命令,就能将本地的 Markdown 文件转换为美观的网页。不需要复杂的配置文件,不需要学习新的模板语法,只需要专注于内容本身。
|
|
29
|
+
|
|
30
|
+
### 第三章
|
|
31
|
+
|
|
32
|
+
三栏布局是文档站点的经典设计。左侧导航帮助用户快速定位文档,中间内容区提供舒适的阅读体验,右侧大纲方便在长文档中跳转。所有栏目都支持拖拽调整宽度,也可以折叠隐藏,适应不同的屏幕尺寸和阅读习惯。
|
|
33
|
+
|
|
34
|
+
### 第四章
|
|
35
|
+
|
|
36
|
+
全文搜索是文档工具的核心功能之一。md2ui 使用 MiniSearch 作为搜索引擎,支持中文 bigram 分词、模糊匹配和前缀搜索。搜索索引采用懒加载策略,只在用户首次打开搜索时构建,避免影响页面加载速度。
|
|
37
|
+
|
|
38
|
+
## 验证要点
|
|
39
|
+
|
|
40
|
+
1. 滚动本文档,右下角应显示进度百分比
|
|
41
|
+
2. 滚动超过 300px 后返回顶部按钮应出现
|
|
42
|
+
3. 点击返回顶部按钮,页面应平滑滚动到顶部
|
|
43
|
+
4. 文档标题下方应显示字数和预计阅读时间
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# 图片放大
|
|
2
|
+
|
|
3
|
+
验证图片点击放大和多图切换功能。
|
|
4
|
+
|
|
5
|
+
## 图片展示
|
|
6
|
+
|
|
7
|
+
以下图片应支持点击放大查看:
|
|
8
|
+
|
|
9
|
+
\## 放大功能
|
|
10
|
+
|
|
11
|
+
- 点击图片弹出放大浮层
|
|
12
|
+
- 放大浮层显示图片原始尺寸
|
|
13
|
+
- 点击浮层背景或按 ESC 关闭
|
|
14
|
+
|
|
15
|
+
## 多图切换
|
|
16
|
+
|
|
17
|
+
当文档中有多张图片时:
|
|
18
|
+
|
|
19
|
+
- 放大浮层支持左右切换图片
|
|
20
|
+
- 显示当前图片索引
|
|
21
|
+
|
|
22
|
+
## Mermaid 图表放大
|
|
23
|
+
|
|
24
|
+
Mermaid 渲染后的图表也支持点击放大:
|
|
25
|
+
|
|
26
|
+
```mermaid
|
|
27
|
+
graph LR
|
|
28
|
+
A[输入 Markdown] --> B[解析渲染]
|
|
29
|
+
B --> C[HTML 输出]
|
|
30
|
+
C --> D[图片放大支持]
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## 验证要点
|
|
34
|
+
|
|
35
|
+
1. 点击上方 Vue Logo 图片,应弹出放大浮层
|
|
36
|
+
2. 放大浮层中图片应清晰显示
|
|
37
|
+
3. 点击背景或按 ESC 应关闭浮层
|
|
38
|
+
4. 点击 Mermaid 图表也应支持放大
|
|
39
|
+
|
|
40
|
+

|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# 返回顶部
|
|
2
|
+
|
|
3
|
+
验证返回顶部按钮的显示和交互。
|
|
4
|
+
|
|
5
|
+
## 触发条件
|
|
6
|
+
|
|
7
|
+
- 页面滚动超过 300px 时,右下角显示返回顶部按钮
|
|
8
|
+
- 按钮上显示当前滚动进度百分比
|
|
9
|
+
- 滚动回 300px 以内时按钮自动隐藏
|
|
10
|
+
|
|
11
|
+
## 按钮样式
|
|
12
|
+
|
|
13
|
+
- 圆形浮动按钮,固定在右下角
|
|
14
|
+
- 包含向上箭头图标和进度文字
|
|
15
|
+
- 带有淡入淡出动画效果
|
|
16
|
+
|
|
17
|
+
## 填充内容
|
|
18
|
+
|
|
19
|
+
以下为填充内容,确保页面可滚动。
|
|
20
|
+
|
|
21
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
|
|
22
|
+
|
|
23
|
+
在前端开发中,用户体验的细节往往决定了产品的品质。返回顶部按钮虽然是一个小功能,但对于长文档的阅读体验至关重要。当用户阅读到文档底部时,一键返回顶部比手动滚动要方便得多。
|
|
24
|
+
|
|
25
|
+
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
26
|
+
|
|
27
|
+
文档工具的设计需要在功能丰富和使用简洁之间找到平衡。太多的功能会增加学习成本,太少的功能又无法满足需求。md2ui 的目标是提供恰到好处的功能集,让用户专注于内容本身。
|
|
28
|
+
|
|
29
|
+
Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.
|
|
30
|
+
|
|
31
|
+
技术文档的可读性不仅取决于内容质量,还取决于排版和交互设计。合理的字体大小、行高、段落间距,以及清晰的标题层级,都能显著提升阅读体验。
|
|
32
|
+
|
|
33
|
+
## 验证要点
|
|
34
|
+
|
|
35
|
+
1. 向下滚动本文档,返回顶部按钮应出现
|
|
36
|
+
2. 按钮上应显示当前滚动百分比
|
|
37
|
+
3. 点击按钮,页面应平滑滚动到顶部
|
|
38
|
+
4. 滚动到顶部后,按钮应自动隐藏
|
package/public/docs/06-/351/230/205/350/257/273/344/275/223/351/252/214/assets/img-1777261394722.png
ADDED
|
Binary file
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# 响应式布局
|
|
2
|
+
|
|
3
|
+
验证移动端适配的各项功能。
|
|
4
|
+
|
|
5
|
+
## 断点设计
|
|
6
|
+
|
|
7
|
+
| 屏幕宽度 | 模式 | 布局变化 |
|
|
8
|
+
| --- | --- | --- |
|
|
9
|
+
| > 768px | 桌面端 | 三栏布局,侧边栏常驻 |
|
|
10
|
+
| <= 768px | 移动端 | 单栏布局,抽屉式导航 |
|
|
11
|
+
|
|
12
|
+
## 移动端特性
|
|
13
|
+
|
|
14
|
+
### 抽屉式导航
|
|
15
|
+
|
|
16
|
+
- 侧边栏以抽屉形式从左侧滑出
|
|
17
|
+
- 打开时显示半透明遮罩
|
|
18
|
+
- 点击遮罩关闭抽屉
|
|
19
|
+
|
|
20
|
+
### 移动端顶栏
|
|
21
|
+
|
|
22
|
+
- 独立的移动端 Header 组件
|
|
23
|
+
- 包含汉堡菜单按钮、Logo、搜索按钮
|
|
24
|
+
|
|
25
|
+
### 移动端 TOC
|
|
26
|
+
|
|
27
|
+
- 底部浮动目录面板
|
|
28
|
+
- 点击按钮展开/收起
|
|
29
|
+
- 选择标题后自动关闭面板
|
|
30
|
+
|
|
31
|
+
## 验证要点
|
|
32
|
+
|
|
33
|
+
1. 将浏览器窗口缩小到 768px 以下,应切换为移动端布局
|
|
34
|
+
2. 点击汉堡菜单按钮,侧边栏应以抽屉形式弹出
|
|
35
|
+
3. 点击遮罩应关闭抽屉
|
|
36
|
+
4. 底部应显示 TOC 浮动按钮
|
|
37
|
+
5. 恢复窗口宽度后应自动切回桌面端布局
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# 新建与删除
|
|
2
|
+
|
|
3
|
+
验证侧边栏的文档/目录创建和删除功能。
|
|
4
|
+
|
|
5
|
+
## 新建文档
|
|
6
|
+
|
|
7
|
+
1. 点击侧边栏"文档目录"旁的 `+` 按钮
|
|
8
|
+
2. 选择"新建文档"或"新建目录"
|
|
9
|
+
3. 输入名称,点击确定
|
|
10
|
+
|
|
11
|
+
### 新建规则
|
|
12
|
+
|
|
13
|
+
| 规则 | 说明 |
|
|
14
|
+
|------|------|
|
|
15
|
+
| 名称不能为空 | 提示"名称不能为空" |
|
|
16
|
+
| 禁止特殊字符 | `\ / : * ? " < > \|` 不允许 |
|
|
17
|
+
| 不能重名 | 同目录下已存在同名文件/目录时提示 |
|
|
18
|
+
|
|
19
|
+
### 在子目录下新建
|
|
20
|
+
|
|
21
|
+
- 右键点击文件夹节点的 `+` 按钮
|
|
22
|
+
- 新建的文件/目录会创建在该文件夹下
|
|
23
|
+
|
|
24
|
+
## 删除文档
|
|
25
|
+
|
|
26
|
+
1. 右键点击文档/目录节点的删除按钮
|
|
27
|
+
2. 弹出确认弹窗
|
|
28
|
+
3. 确认后删除
|
|
29
|
+
|
|
30
|
+
### 删除规则
|
|
31
|
+
|
|
32
|
+
- 删除文件:直接删除
|
|
33
|
+
- 删除目录:递归删除目录下所有内容,弹窗会提示"目录下的所有内容将被一并删除"
|
|
34
|
+
|
|
35
|
+
## 文件热更新
|
|
36
|
+
|
|
37
|
+
- 文件列表变化后自动刷新导航树(轮询 + ETag 机制)
|
|
38
|
+
- 当前文档内容变化后自动刷新内容
|
|
39
|
+
- 轮询间隔 1 秒
|
|
40
|
+
|
|
41
|
+
## 验证要点
|
|
42
|
+
|
|
43
|
+
1. 点击 `+` 按钮应弹出新建菜单
|
|
44
|
+
2. 新建文档后应立即出现在导航树中
|
|
45
|
+
3. 删除文档前应弹出确认弹窗
|
|
46
|
+
4. 删除后文档应从导航树中消失
|
|
47
|
+
5. 外部修改文件后,页面应自动刷新
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# 导出 Word
|
|
2
|
+
|
|
3
|
+
验证文档导出为 .docx 文件的功能。
|
|
4
|
+
|
|
5
|
+
## 使用方式
|
|
6
|
+
|
|
7
|
+
顶部工具栏点击"导出 Word"按钮,即可将当前文档导出为 .docx 文件。
|
|
8
|
+
|
|
9
|
+
## 支持的元素
|
|
10
|
+
|
|
11
|
+
| 元素 | 导出效果 |
|
|
12
|
+
|------|----------|
|
|
13
|
+
| 标题 h1~h6 | 对应 Word 标题级别 |
|
|
14
|
+
| 段落 | 正文段落 |
|
|
15
|
+
| 粗体/斜体/删除线 | 对应文本格式 |
|
|
16
|
+
| 行内代码 | Consolas 字体 + 灰色背景 |
|
|
17
|
+
| 超链接 | 可点击的蓝色链接 |
|
|
18
|
+
| 无序/有序列表 | 带缩进的列表 |
|
|
19
|
+
| 任务列表 | [x] / [ ] 前缀文本 |
|
|
20
|
+
| 引用块 | 左侧边框 + 灰色背景 |
|
|
21
|
+
| 代码块 | 等宽字体 + 灰色背景 + 边框 |
|
|
22
|
+
| 表格 | 固定布局表格,兼容 Office + WPS |
|
|
23
|
+
| 图片 | 嵌入图片(限制最大宽度 6 英寸) |
|
|
24
|
+
| Mermaid 图表 | SVG 转 PNG 后嵌入 |
|
|
25
|
+
| 水平线 | 底部边框线 |
|
|
26
|
+
|
|
27
|
+
## 导出配置
|
|
28
|
+
|
|
29
|
+
- 字体:Microsoft YaHei(微软雅黑)
|
|
30
|
+
- 正文字号:11pt
|
|
31
|
+
- 行距:1.5 倍
|
|
32
|
+
- 页边距:上下 1 英寸,左右 1.2 英寸
|
|
33
|
+
|
|
34
|
+
## 以下内容用于测试导出效果
|
|
35
|
+
|
|
36
|
+
### 文本格式
|
|
37
|
+
|
|
38
|
+
**粗体**、*斜体*、~~删除线~~、`行内代码`
|
|
39
|
+
|
|
40
|
+
### 链接
|
|
41
|
+
|
|
42
|
+
[GitHub](https://github.com)
|
|
43
|
+
|
|
44
|
+
### 列表
|
|
45
|
+
|
|
46
|
+
- 无序列表项 1
|
|
47
|
+
- 无序列表项 2
|
|
48
|
+
|
|
49
|
+
1. 有序列表项 1
|
|
50
|
+
2. 有序列表项 2
|
|
51
|
+
|
|
52
|
+
### 引用
|
|
53
|
+
|
|
54
|
+
> 这是一段引用文本,用于测试导出效果。
|
|
55
|
+
|
|
56
|
+
### 代码块
|
|
57
|
+
|
|
58
|
+
```javascript
|
|
59
|
+
function hello() {
|
|
60
|
+
console.log('Hello, md2ui!')
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### 表格
|
|
65
|
+
|
|
66
|
+
| 功能 | 状态 |
|
|
67
|
+
|------|------|
|
|
68
|
+
| 标题导出 | 已支持 |
|
|
69
|
+
| 表格导出 | 已支持 |
|
|
70
|
+
| 图表导出 | 已支持 |
|
|
71
|
+
|
|
72
|
+
## 验证要点
|
|
73
|
+
|
|
74
|
+
1. 点击"导出 Word"按钮应下载 .docx 文件
|
|
75
|
+
2. 用 Word 或 WPS 打开,各元素格式应正确
|
|
76
|
+
3. 表格应正确显示行列结构
|
|
77
|
+
4. 导出过程中按钮应显示"导出中..."
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# CLI 工具
|
|
2
|
+
|
|
3
|
+
验证 md2ui 命令行工具的各项功能。
|
|
4
|
+
|
|
5
|
+
## 基本用法
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# 在文档目录下启动预览
|
|
9
|
+
cd /path/to/your/docs
|
|
10
|
+
md2ui
|
|
11
|
+
|
|
12
|
+
# 指定端口
|
|
13
|
+
md2ui -p 8080
|
|
14
|
+
|
|
15
|
+
# 静态构建
|
|
16
|
+
md2ui build
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## 启动流程
|
|
20
|
+
|
|
21
|
+
1. 扫描当前目录下的 `.md` 文件
|
|
22
|
+
2. 加载用户配置文件(如果存在)
|
|
23
|
+
3. 启动 Vite 开发服务器
|
|
24
|
+
4. 自动打开浏览器
|
|
25
|
+
|
|
26
|
+
## 配置文件加载
|
|
27
|
+
|
|
28
|
+
CLI 按以下顺序查找配置文件:
|
|
29
|
+
|
|
30
|
+
| 优先级 | 文件名 | 格式 |
|
|
31
|
+
|--------|--------|------|
|
|
32
|
+
| 1 | `md2ui.config.js` | ES Module |
|
|
33
|
+
| 2 | `.md2uirc.json` | JSON |
|
|
34
|
+
|
|
35
|
+
命令行参数优先级最高,会覆盖配置文件中的同名配置。
|
|
36
|
+
|
|
37
|
+
## 服务端 API
|
|
38
|
+
|
|
39
|
+
开发服务器提供以下 API:
|
|
40
|
+
|
|
41
|
+
| 路径 | 方法 | 说明 |
|
|
42
|
+
|------|------|------|
|
|
43
|
+
| `/@user-docs-list` | GET | 文档列表 |
|
|
44
|
+
| `/@site-config` | GET | 站点配置 |
|
|
45
|
+
| `/@user-docs/{path}` | GET | 文档内容 |
|
|
46
|
+
|
|
47
|
+
## 验证要点
|
|
48
|
+
|
|
49
|
+
1. 在包含 .md 文件的目录下运行 `md2ui` 应启动服务
|
|
50
|
+
2. 无 .md 文件时应提示错误并退出
|
|
51
|
+
3. `-p` 参数应正确设置端口
|
|
52
|
+
4. 配置文件应被正确加载
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# SSG 静态构建
|
|
2
|
+
|
|
3
|
+
验证 `md2ui build` 静态站点生成功能。
|
|
4
|
+
|
|
5
|
+
## 使用方式
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
md2ui build
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 构建产物
|
|
12
|
+
|
|
13
|
+
构建完成后在 `dist/` 目录下生成纯静态文件:
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
dist/
|
|
17
|
+
├── index.html # 入口页面
|
|
18
|
+
├── assets/ # JS/CSS 资源
|
|
19
|
+
└── docs/ # 文档文件
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## 部署方式
|
|
23
|
+
|
|
24
|
+
生成的静态文件可部署到任意静态服务器:
|
|
25
|
+
|
|
26
|
+
| 平台 | 说明 |
|
|
27
|
+
|------|------|
|
|
28
|
+
| GitHub Pages | 推送 dist 目录到 gh-pages 分支 |
|
|
29
|
+
| Vercel | 配置输出目录为 dist |
|
|
30
|
+
| Nginx | 将 dist 目录配置为网站根目录 |
|
|
31
|
+
| CDN | 上传 dist 目录到 CDN 存储 |
|
|
32
|
+
|
|
33
|
+
## SPA 路由
|
|
34
|
+
|
|
35
|
+
- 基于 hash 的文档路由
|
|
36
|
+
- 支持浏览器前进/后退
|
|
37
|
+
- 支持直接通过 URL 访问特定文档
|
|
38
|
+
|
|
39
|
+
## 验证要点
|
|
40
|
+
|
|
41
|
+
1. 运行 `md2ui build` 应在 dist 目录生成静态文件
|
|
42
|
+
2. 用静态服务器打开 dist/index.html 应正常显示
|
|
43
|
+
3. 文档导航和内容加载应正常工作
|
|
44
|
+
4. URL 路由应正确解析
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# 自定义配置
|
|
2
|
+
|
|
3
|
+
验证用户自定义配置的加载和生效。
|
|
4
|
+
|
|
5
|
+
## 配置文件
|
|
6
|
+
|
|
7
|
+
在文档目录下创建 `md2ui.config.js` 或 `.md2uirc.json`:
|
|
8
|
+
|
|
9
|
+
```js
|
|
10
|
+
// md2ui.config.js
|
|
11
|
+
export default {
|
|
12
|
+
title: '我的文档站',
|
|
13
|
+
port: 8080,
|
|
14
|
+
folderExpanded: true,
|
|
15
|
+
themeColor: '#3eaf7c',
|
|
16
|
+
github: 'https://github.com/xiaoyaodev/md2ui',
|
|
17
|
+
footer: 'Copyright © 2025'
|
|
18
|
+
}
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## 配置项
|
|
22
|
+
|
|
23
|
+
| 配置项 | 类型 | 默认值 | 说明 |
|
|
24
|
+
|--------|------|--------|------|
|
|
25
|
+
| title | string | `'md2ui'` | 站点标题,显示在顶部 Logo 旁 |
|
|
26
|
+
| port | number | `3000` | 开发服务器端口 |
|
|
27
|
+
| folderExpanded | boolean | `false` | 文件夹默认是否展开 |
|
|
28
|
+
| themeColor | string | `'#3eaf7c'` | 主题色,影响全局强调色 |
|
|
29
|
+
| github | string | `''` | GitHub 仓库链接,显示在顶部 |
|
|
30
|
+
| footer | string | `''` | 页脚内容 |
|
|
31
|
+
|
|
32
|
+
## JSON 格式
|
|
33
|
+
|
|
34
|
+
```json
|
|
35
|
+
{
|
|
36
|
+
"title": "我的文档站",
|
|
37
|
+
"port": 8080,
|
|
38
|
+
"folderExpanded": true,
|
|
39
|
+
"themeColor": "#3eaf7c",
|
|
40
|
+
"github": "https://github.com/xiaoyaodev/md2ui",
|
|
41
|
+
"footer": "Copyright © 2025"
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## 优先级
|
|
46
|
+
|
|
47
|
+
配置合并优先级(从低到高):
|
|
48
|
+
|
|
49
|
+
1. 内置默认值
|
|
50
|
+
2. 配置文件(md2ui.config.js 或 .md2uirc.json)
|
|
51
|
+
3. 命令行参数(如 `-p 8080`)
|
|
52
|
+
|
|
53
|
+
## 验证要点
|
|
54
|
+
|
|
55
|
+
1. 创建配置文件后重启服务,配置应生效
|
|
56
|
+
2. 修改 title 后页面标题应更新
|
|
57
|
+
3. 修改 themeColor 后主题色应变化
|
|
58
|
+
4. 命令行 `-p` 参数应覆盖配置文件中的 port
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# 一级文档
|
|
2
|
+
|
|
3
|
+
这是多级目录测试的一级文档,用于验证目录树的多级嵌套显示。
|
|
4
|
+
|
|
5
|
+
## 目录结构
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
11-多级目录测试/
|
|
9
|
+
├── 01-一级文档.md ← 当前文档
|
|
10
|
+
└── 01-子目录/
|
|
11
|
+
├── 01-二级文档.md
|
|
12
|
+
└── 01-深层嵌套/
|
|
13
|
+
└── 01-三级文档.md
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## 验证要点
|
|
17
|
+
|
|
18
|
+
1. 左侧导航应正确显示三级嵌套结构
|
|
19
|
+
2. 文件夹节点应可展开/收起
|
|
20
|
+
3. 各级文档应可正常点击加载
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# 三级文档
|
|
2
|
+
|
|
3
|
+
这是多级目录测试的三级文档,位于 `01-子目录/01-深层嵌套` 下。
|
|
4
|
+
|
|
5
|
+
## 深层嵌套验证
|
|
6
|
+
|
|
7
|
+
本文档验证三级及以上目录嵌套的正确性:
|
|
8
|
+
|
|
9
|
+
- 导航树应正确缩进显示
|
|
10
|
+
- 文件夹展开/收起应正常工作
|
|
11
|
+
- 上下篇导航应正确计算
|
|
12
|
+
|
|
13
|
+
## 站内链接测试
|
|
14
|
+
|
|
15
|
+
- [返回二级文档](../01-二级文档.md)
|
|
16
|
+
- [返回一级文档](../../01-一级文档.md)
|
|
17
|
+
- [跳转到快速开始](../../../00-快速开始.md)
|
|
18
|
+
|
|
19
|
+
## 验证要点
|
|
20
|
+
|
|
21
|
+
1. 本文档应在导航树的第三级显示
|
|
22
|
+
2. 多级返回链接应可正常跳转
|
|
23
|
+
3. 跨多级目录的链接应正确解析
|