@jet-w/astro-blog 0.1.6 → 0.2.1
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/dist/chunk-6D3XRDNY.js +145 -0
- package/dist/chunk-A2E2VSAQ.js +246 -0
- package/dist/{chunk-GYLSY3OJ.js → chunk-TJTPX2WP.js} +1 -1
- package/dist/config/index.d.ts +3 -47
- package/dist/config/index.js +18 -2
- package/dist/i18n-PgMCFBw0.d.ts +222 -0
- package/dist/index.d.ts +204 -7
- package/dist/index.js +255 -3
- package/dist/integration.d.ts +9 -1
- package/dist/integration.js +2 -1
- package/dist/{sidebar-DNdiCKBw.d.ts → sidebar-Da-W_4Lr.d.ts} +1 -1
- package/dist/utils/sidebar.d.ts +1 -1
- package/package.json +1 -1
- package/src/components/blog/FloatingToc.vue +11 -3
- package/src/components/blog/Hero.astro +17 -2
- package/src/components/blog/NavigationTabs.vue +46 -15
- package/src/components/blog/PostCard.astro +28 -10
- package/src/components/blog/RelatedPosts.astro +23 -7
- package/src/components/blog/TableOfContents.astro +10 -4
- package/src/components/blog/TagCloud.astro +4 -3
- package/src/components/home/FeaturedPostsSection.astro +22 -6
- package/src/components/home/QuickNavSection.astro +33 -4
- package/src/components/home/RecentPostsSection.astro +22 -6
- package/src/components/home/StatsSection.astro +24 -6
- package/src/components/layout/Footer.astro +36 -20
- package/src/components/layout/Header.astro +75 -17
- package/src/components/layout/Sidebar.astro +40 -25
- package/src/components/ui/LanguageSwitcher.vue +183 -0
- package/src/components/ui/SearchBox.vue +13 -5
- package/src/components/ui/SearchInterface.vue +49 -25
- package/src/layouts/BaseLayout.astro +77 -52
- package/src/layouts/PageLayout.astro +22 -27
- package/src/layouts/SlidesLayout.astro +14 -2
- package/src/pages/archives/[year]/[month].astro +36 -17
- package/src/pages/archives/index.astro +36 -20
- package/src/pages/categories/[category].astro +33 -16
- package/src/pages/categories/index.astro +37 -14
- package/src/pages/posts/[...slug].astro +125 -18
- package/src/pages/posts/index.astro +59 -37
- package/src/pages/posts/page/[page].astro +65 -27
- package/src/pages/rss.xml.ts +18 -6
- package/src/pages/search.astro +50 -14
- package/src/pages/slides/index.astro +25 -6
- package/src/pages/tags/[tag].astro +32 -15
- package/src/pages/tags/index.astro +39 -16
- package/src/plugins/remark-containers.mjs +351 -322
- package/src/plugins/remark-protect-code.mjs +69 -0
- package/src/styles/global.css +35 -1
- package/templates/default/.claude/ralph-loop.local.md +48 -0
- package/templates/default/astro.config.mjs +33 -4
- package/templates/default/content/posts/blog_docs_en/01.get-started/01-intro.md +81 -0
- package/templates/default/content/posts/blog_docs_en/01.get-started/02-install.md +137 -0
- package/templates/default/content/posts/blog_docs_en/01.get-started/03-create-post.md +176 -0
- package/templates/default/content/posts/blog_docs_en/01.get-started/04-structure.md +173 -0
- package/templates/default/content/posts/blog_docs_en/01.get-started/05-deploy.md +208 -0
- package/templates/default/content/posts/blog_docs_en/01.get-started/README.md +52 -0
- package/templates/default/content/posts/blog_docs_en/02.guide/02-containers.md +245 -0
- package/templates/default/content/posts/blog_docs_en/02.guide/03-code-blocks.md +207 -0
- package/templates/default/content/posts/blog_docs_en/02.guide/03-mermaid.md +194 -0
- package/templates/default/content/posts/blog_docs_en/02.guide/04-icons.md +229 -0
- package/templates/default/content/posts/blog_docs_en/02.guide/06-latex.md +233 -0
- package/templates/default/content/posts/blog_docs_en/02.guide/07-video.md +184 -0
- package/templates/default/content/posts/blog_docs_en/02.guide/08-slides.md +359 -0
- package/templates/default/content/posts/blog_docs_en/02.guide/README.md +213 -0
- package/templates/default/content/posts/blog_docs_en/03.config/01-site.md +208 -0
- package/templates/default/content/posts/blog_docs_en/03.config/02-sidebar.md +240 -0
- package/templates/default/content/posts/blog_docs_en/03.config/03-i18n.md +349 -0
- package/templates/default/content/posts/blog_docs_en/03.config/README.md +85 -0
- package/templates/default/content/posts/blog_docs_en/README.md +79 -0
- package/templates/default/content/posts/blog_docs_zh/01.get-started/01-intro.md +81 -0
- package/templates/default/content/posts/blog_docs_zh/01.get-started/02-install.md +137 -0
- package/templates/default/content/posts/blog_docs_zh/01.get-started/03-create-post.md +176 -0
- package/templates/default/content/posts/blog_docs_zh/01.get-started/04-structure.md +173 -0
- package/templates/default/content/posts/blog_docs_zh/01.get-started/05-deploy.md +208 -0
- package/templates/default/content/posts/blog_docs_zh/01.get-started/README.md +52 -0
- package/templates/default/content/posts/blog_docs_zh/02.guide/02-containers.md +245 -0
- package/templates/default/content/posts/blog_docs_zh/02.guide/03-code-blocks.md +206 -0
- package/templates/default/content/posts/blog_docs_zh/02.guide/03-mermaid.md +194 -0
- package/templates/default/content/posts/blog_docs_zh/02.guide/04-icons.md +229 -0
- package/templates/default/content/posts/blog_docs_zh/02.guide/06-latex.md +233 -0
- package/templates/default/content/posts/blog_docs_zh/02.guide/07-video.md +184 -0
- package/templates/default/content/posts/blog_docs_zh/02.guide/08-slides.md +359 -0
- package/templates/default/content/posts/blog_docs_zh/02.guide/README.md +213 -0
- package/templates/default/content/posts/blog_docs_zh/03.config/01-site.md +208 -0
- package/templates/default/content/posts/blog_docs_zh/03.config/02-sidebar.md +240 -0
- package/templates/default/content/posts/blog_docs_zh/03.config/03-i18n.md +348 -0
- package/templates/default/content/posts/blog_docs_zh/03.config/README.md +85 -0
- package/templates/default/content/posts/blog_docs_zh/README.md +78 -0
- package/templates/default/package-lock.json +9667 -0
- package/templates/default/package.json +1 -1
- package/templates/default/src/config/footer.ts +14 -11
- package/templates/default/src/config/locales/en/footer.ts +17 -0
- package/templates/default/src/config/locales/en/index.ts +20 -0
- package/templates/default/src/config/locales/en/menu.ts +14 -0
- package/templates/default/src/config/locales/en/sidebar.ts +34 -0
- package/templates/default/src/config/locales/en/site.ts +7 -0
- package/templates/default/src/config/locales/en/ui.ts +29 -0
- package/templates/default/src/config/locales/index.ts +7 -0
- package/templates/default/src/config/locales/zh-CN/footer.ts +17 -0
- package/templates/default/src/config/locales/zh-CN/index.ts +20 -0
- package/templates/default/src/config/locales/zh-CN/menu.ts +14 -0
- package/templates/default/src/config/locales/zh-CN/sidebar.ts +34 -0
- package/templates/default/src/config/locales/zh-CN/site.ts +7 -0
- package/templates/default/src/config/locales/zh-CN/ui.ts +29 -0
- package/templates/default/src/config/sidebar.ts +10 -12
- package/templates/default/src/config/site.ts +2 -2
- package/templates/default/src/content.config.ts +15 -3
- package/templates/default/src/env.d.ts +7 -0
- package/dist/chunk-MQXPSOYB.js +0 -124
- package/templates/default/content/posts/blog_docs/01-quick-start.md +0 -162
- package/templates/default/content/posts/blog_docs/02-frontmatter.md +0 -277
- package/templates/default/content/posts/blog_docs/03-markdown-basic.md +0 -350
- package/templates/default/content/posts/blog_docs/04-containers.md +0 -331
- package/templates/default/content/posts/blog_docs/05-code-blocks.md +0 -388
- package/templates/default/content/posts/blog_docs/06-mermaid.md +0 -431
- package/templates/default/content/posts/blog_docs/07-video.md +0 -243
- package/templates/default/content/posts/blog_docs/08-latex.md +0 -382
- package/templates/default/content/posts/blog_docs/09-icons.md +0 -326
- package/templates/default/content/posts/blog_docs/10-sidebar.md +0 -445
- package/templates/default/content/posts/blog_docs/11-config.md +0 -334
- package/templates/default/content/posts/blog_docs/12-slides.mdx +0 -552
- package/templates/default/content/posts/blog_docs/README.md +0 -151
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 快速入门
|
|
3
|
+
description: 从安装到部署,开始你的 Astro 博客之旅
|
|
4
|
+
pubDate: 2025-01-01
|
|
5
|
+
author: jet-w
|
|
6
|
+
categories:
|
|
7
|
+
- 文档
|
|
8
|
+
tags:
|
|
9
|
+
- 入门
|
|
10
|
+
- 教程
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# 快速入门
|
|
14
|
+
|
|
15
|
+
欢迎!本指南将引导你从零开始设置你的 Astro 博客。
|
|
16
|
+
|
|
17
|
+
::: tip 适合谁?
|
|
18
|
+
本教程专为初学者设计。即使你是 Astro 或静态站点生成器的新手,也可以按照步骤轻松完成。
|
|
19
|
+
:::
|
|
20
|
+
|
|
21
|
+
## 学习路径
|
|
22
|
+
|
|
23
|
+
按顺序学习以下章节:
|
|
24
|
+
|
|
25
|
+
| 步骤 | 章节 | 你将学到 |
|
|
26
|
+
|------|------|----------|
|
|
27
|
+
| 1 | [介绍](./01-intro) | Astro 博客是什么及其特性 |
|
|
28
|
+
| 2 | [安装](./02-install) | 设置 Node.js 并安装项目 |
|
|
29
|
+
| 3 | [第一篇文章](./03-create-post) | 编写并发布你的第一篇文章 |
|
|
30
|
+
| 4 | [项目结构](./04-structure) | 了解文件的组织方式 |
|
|
31
|
+
| 5 | [部署](./05-deploy) | 构建并部署到网络 |
|
|
32
|
+
|
|
33
|
+
## 前置要求
|
|
34
|
+
|
|
35
|
+
在开始之前,请确保你已具备:
|
|
36
|
+
|
|
37
|
+
- **Node.js 18+** 已安装在你的电脑上
|
|
38
|
+
- 一个**代码编辑器**(推荐 VS Code)
|
|
39
|
+
- 基本的**命令行**使用能力
|
|
40
|
+
|
|
41
|
+
::: info 没有 Node.js?
|
|
42
|
+
从 [nodejs.org](https://nodejs.org) 下载安装。选择 LTS(长期支持)版本。
|
|
43
|
+
:::
|
|
44
|
+
|
|
45
|
+
## 所需时间
|
|
46
|
+
|
|
47
|
+
- **快速设置**:约 5 分钟
|
|
48
|
+
- **完整教程**:约 30 分钟
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
准备好了吗?让我们从 [介绍](./01-intro) 开始!
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 容器
|
|
3
|
+
description: 使用标注框来突出提示、警告和重要信息
|
|
4
|
+
pubDate: 2025-01-01
|
|
5
|
+
author: jet-w
|
|
6
|
+
categories:
|
|
7
|
+
- 文档
|
|
8
|
+
tags:
|
|
9
|
+
- Markdown
|
|
10
|
+
- 容器
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# 容器
|
|
14
|
+
|
|
15
|
+
容器是特殊的标注框,用于突出显示重要信息。
|
|
16
|
+
|
|
17
|
+
## 基本语法
|
|
18
|
+
|
|
19
|
+
```markdown
|
|
20
|
+
::: type
|
|
21
|
+
内容放在这里
|
|
22
|
+
:::
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## 容器类型
|
|
26
|
+
|
|
27
|
+
### 提示 (Tip)
|
|
28
|
+
|
|
29
|
+
用于有用的建议:
|
|
30
|
+
|
|
31
|
+
```markdown
|
|
32
|
+
::: tip
|
|
33
|
+
这是给读者的一个有用提示。
|
|
34
|
+
:::
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
<div class="container-tip custom-container" data-container-type="tip">
|
|
38
|
+
<div class="container-title">Tip</div>
|
|
39
|
+
<div class="container-content">
|
|
40
|
+
<p>这是给读者的一个有用提示。</p>
|
|
41
|
+
</div>
|
|
42
|
+
</div>
|
|
43
|
+
|
|
44
|
+
### 信息 (Info)
|
|
45
|
+
|
|
46
|
+
用于补充说明:
|
|
47
|
+
|
|
48
|
+
```markdown
|
|
49
|
+
::: info
|
|
50
|
+
这里是一些额外的信息。
|
|
51
|
+
:::
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
<div class="container-info custom-container" data-container-type="info">
|
|
55
|
+
<div class="container-title">Info</div>
|
|
56
|
+
<div class="container-content">
|
|
57
|
+
<p>这里是一些额外的信息。</p>
|
|
58
|
+
</div>
|
|
59
|
+
</div>
|
|
60
|
+
|
|
61
|
+
### 警告 (Warning)
|
|
62
|
+
|
|
63
|
+
用于需要注意的事项:
|
|
64
|
+
|
|
65
|
+
```markdown
|
|
66
|
+
::: warning
|
|
67
|
+
请小心这个操作。
|
|
68
|
+
:::
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
<div class="container-warning custom-container" data-container-type="warning">
|
|
72
|
+
<div class="container-title">Warning</div>
|
|
73
|
+
<div class="container-content">
|
|
74
|
+
<p>请小心这个操作。</p>
|
|
75
|
+
</div>
|
|
76
|
+
</div>
|
|
77
|
+
|
|
78
|
+
### 危险 (Danger)
|
|
79
|
+
|
|
80
|
+
用于严重警告:
|
|
81
|
+
|
|
82
|
+
```markdown
|
|
83
|
+
::: danger
|
|
84
|
+
此操作无法撤销!
|
|
85
|
+
:::
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
<div class="container-danger custom-container" data-container-type="danger">
|
|
89
|
+
<div class="container-title">Danger</div>
|
|
90
|
+
<div class="container-content">
|
|
91
|
+
<p>此操作无法撤销!</p>
|
|
92
|
+
</div>
|
|
93
|
+
</div>
|
|
94
|
+
|
|
95
|
+
### 备注 (Note)
|
|
96
|
+
|
|
97
|
+
用于一般性说明:
|
|
98
|
+
|
|
99
|
+
```markdown
|
|
100
|
+
::: note
|
|
101
|
+
给读者的一个旁注。
|
|
102
|
+
:::
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
<div class="container-note custom-container" data-container-type="note">
|
|
106
|
+
<div class="container-title">Note</div>
|
|
107
|
+
<div class="container-content">
|
|
108
|
+
<p>给读者的一个旁注。</p>
|
|
109
|
+
</div>
|
|
110
|
+
</div>
|
|
111
|
+
|
|
112
|
+
## 自定义标题
|
|
113
|
+
|
|
114
|
+
在类型后添加自定义标题:
|
|
115
|
+
|
|
116
|
+
```markdown
|
|
117
|
+
::: tip 专业建议
|
|
118
|
+
这个容器有一个自定义标题。
|
|
119
|
+
:::
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
<div class="container-tip custom-container" data-container-type="tip">
|
|
123
|
+
<div class="container-title">专业建议</div>
|
|
124
|
+
<div class="container-content">
|
|
125
|
+
<p>这个容器有一个自定义标题。</p>
|
|
126
|
+
</div>
|
|
127
|
+
</div>
|
|
128
|
+
|
|
129
|
+
```markdown
|
|
130
|
+
::: warning 安全提醒
|
|
131
|
+
始终验证用户输入!
|
|
132
|
+
:::
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
<div class="container-warning custom-container" data-container-type="warning">
|
|
136
|
+
<div class="container-title">安全提醒</div>
|
|
137
|
+
<div class="container-content">
|
|
138
|
+
<p>始终验证用户输入!</p>
|
|
139
|
+
</div>
|
|
140
|
+
</div>
|
|
141
|
+
|
|
142
|
+
## 丰富内容
|
|
143
|
+
|
|
144
|
+
容器内支持完整的 Markdown:
|
|
145
|
+
|
|
146
|
+
```markdown
|
|
147
|
+
::: info 功能特性
|
|
148
|
+
这个博客支持:
|
|
149
|
+
- **Markdown** 格式
|
|
150
|
+
- `代码` 片段
|
|
151
|
+
- [链接](https://example.com)
|
|
152
|
+
:::
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
<div class="container-info custom-container" data-container-type="info">
|
|
156
|
+
<div class="container-title">功能特性</div>
|
|
157
|
+
<div class="container-content">
|
|
158
|
+
<p>这个博客支持:</p>
|
|
159
|
+
<ul>
|
|
160
|
+
<li><strong>Markdown</strong> 格式</li>
|
|
161
|
+
<li><code>代码</code> 片段</li>
|
|
162
|
+
<li><a href="https://example.com">链接</a></li>
|
|
163
|
+
</ul>
|
|
164
|
+
</div>
|
|
165
|
+
</div>
|
|
166
|
+
|
|
167
|
+
## 折叠面板 (Details)
|
|
168
|
+
|
|
169
|
+
创建可展开的区域:
|
|
170
|
+
|
|
171
|
+
```markdown
|
|
172
|
+
::: details 点击展开
|
|
173
|
+
这些内容默认是隐藏的。
|
|
174
|
+
你可以在这里放很多内容。
|
|
175
|
+
:::
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
<details class="container-details custom-container" data-container-type="details">
|
|
179
|
+
<summary class="container-title">点击展开</summary>
|
|
180
|
+
<div class="container-content">
|
|
181
|
+
<p>这些内容默认是隐藏的。</p>
|
|
182
|
+
<p>你可以在这里放很多内容。</p>
|
|
183
|
+
</div>
|
|
184
|
+
</details>
|
|
185
|
+
|
|
186
|
+
### 折叠面板中的代码
|
|
187
|
+
|
|
188
|
+
```markdown
|
|
189
|
+
::: details 查看解决方案
|
|
190
|
+
function solve() {
|
|
191
|
+
return 42;
|
|
192
|
+
}
|
|
193
|
+
:::
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
<details class="container-details custom-container" data-container-type="details">
|
|
197
|
+
<summary class="container-title">查看解决方案</summary>
|
|
198
|
+
<div class="container-content">
|
|
199
|
+
|
|
200
|
+
```javascript
|
|
201
|
+
function solve() {
|
|
202
|
+
return 42;
|
|
203
|
+
}
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
</div>
|
|
207
|
+
</details>
|
|
208
|
+
|
|
209
|
+
## 最佳实践
|
|
210
|
+
|
|
211
|
+
<div class="container-tip custom-container" data-container-type="tip">
|
|
212
|
+
<div class="container-title">何时使用容器</div>
|
|
213
|
+
<div class="container-content">
|
|
214
|
+
<ul>
|
|
215
|
+
<li><strong>tip</strong> - 有用的建议、最佳实践</li>
|
|
216
|
+
<li><strong>info</strong> - 背景信息、上下文</li>
|
|
217
|
+
<li><strong>warning</strong> - 潜在问题、需要注意的事项</li>
|
|
218
|
+
<li><strong>danger</strong> - 严重错误、数据丢失风险</li>
|
|
219
|
+
<li><strong>note</strong> - 一般性说明</li>
|
|
220
|
+
<li><strong>details</strong> - 可选内容、长示例</li>
|
|
221
|
+
</ul>
|
|
222
|
+
</div>
|
|
223
|
+
</div>
|
|
224
|
+
|
|
225
|
+
<div class="container-warning custom-container" data-container-type="warning">
|
|
226
|
+
<div class="container-title">不要过度使用</div>
|
|
227
|
+
<div class="container-content">
|
|
228
|
+
<p>太多容器会分散注意力。谨慎使用,只用于真正重要的信息。</p>
|
|
229
|
+
</div>
|
|
230
|
+
</div>
|
|
231
|
+
|
|
232
|
+
## 快速参考
|
|
233
|
+
|
|
234
|
+
| 类型 | 语法 | 用途 |
|
|
235
|
+
|------|------|------|
|
|
236
|
+
| tip | `::: tip` | 有用的建议 |
|
|
237
|
+
| info | `::: info` | 额外信息 |
|
|
238
|
+
| warning | `::: warning` | 注意事项 |
|
|
239
|
+
| danger | `::: danger` | 严重警告 |
|
|
240
|
+
| note | `::: note` | 旁注 |
|
|
241
|
+
| details | `::: details` | 可折叠内容 |
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
下一步:掌握 [代码块](./03-code-blocks) 来展示精美的代码片段。
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 代码块
|
|
3
|
+
description: 语法高亮、行号和代码显示功能
|
|
4
|
+
pubDate: 2025-01-01
|
|
5
|
+
author: jet-w
|
|
6
|
+
categories:
|
|
7
|
+
- 文档
|
|
8
|
+
tags:
|
|
9
|
+
- Markdown
|
|
10
|
+
- 代码
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# 代码块
|
|
14
|
+
|
|
15
|
+
使用 Shiki 提供的精美语法高亮来展示代码。
|
|
16
|
+
|
|
17
|
+
## 基本代码块
|
|
18
|
+
|
|
19
|
+
用三个反引号包裹代码:
|
|
20
|
+
|
|
21
|
+
````markdown
|
|
22
|
+
```
|
|
23
|
+
纯文本代码块
|
|
24
|
+
```
|
|
25
|
+
````
|
|
26
|
+
|
|
27
|
+
## 语法高亮
|
|
28
|
+
|
|
29
|
+
在反引号后指定语言:
|
|
30
|
+
|
|
31
|
+
````markdown
|
|
32
|
+
```javascript
|
|
33
|
+
function greet(name) {
|
|
34
|
+
return `Hello, ${name}!`;
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
````
|
|
38
|
+
|
|
39
|
+
```javascript
|
|
40
|
+
function greet(name) {
|
|
41
|
+
return `Hello, ${name}!`;
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## 支持的语言
|
|
46
|
+
|
|
47
|
+
支持 100+ 种语言:
|
|
48
|
+
|
|
49
|
+
| 语言 | 标识符 |
|
|
50
|
+
|------|--------|
|
|
51
|
+
| JavaScript | `javascript`, `js` |
|
|
52
|
+
| TypeScript | `typescript`, `ts` |
|
|
53
|
+
| Python | `python`, `py` |
|
|
54
|
+
| HTML | `html` |
|
|
55
|
+
| CSS | `css` |
|
|
56
|
+
| JSON | `json` |
|
|
57
|
+
| Bash | `bash`, `sh` |
|
|
58
|
+
| Markdown | `markdown`, `md` |
|
|
59
|
+
|
|
60
|
+
## 语言示例
|
|
61
|
+
|
|
62
|
+
### JavaScript/TypeScript
|
|
63
|
+
|
|
64
|
+
```typescript
|
|
65
|
+
interface User {
|
|
66
|
+
name: string;
|
|
67
|
+
age: number;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
const user: User = {
|
|
71
|
+
name: 'Alice',
|
|
72
|
+
age: 25
|
|
73
|
+
};
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Python
|
|
77
|
+
|
|
78
|
+
```python
|
|
79
|
+
def fibonacci(n):
|
|
80
|
+
if n <= 1:
|
|
81
|
+
return n
|
|
82
|
+
return fibonacci(n-1) + fibonacci(n-2)
|
|
83
|
+
|
|
84
|
+
print([fibonacci(i) for i in range(10)])
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### HTML
|
|
88
|
+
|
|
89
|
+
```html
|
|
90
|
+
<!DOCTYPE html>
|
|
91
|
+
<html>
|
|
92
|
+
<head>
|
|
93
|
+
<title>Hello</title>
|
|
94
|
+
</head>
|
|
95
|
+
<body>
|
|
96
|
+
<h1>Hello World</h1>
|
|
97
|
+
</body>
|
|
98
|
+
</html>
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### CSS
|
|
102
|
+
|
|
103
|
+
```css
|
|
104
|
+
.container {
|
|
105
|
+
display: flex;
|
|
106
|
+
justify-content: center;
|
|
107
|
+
align-items: center;
|
|
108
|
+
gap: 1rem;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.button {
|
|
112
|
+
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
113
|
+
color: white;
|
|
114
|
+
padding: 0.5rem 1rem;
|
|
115
|
+
border-radius: 0.25rem;
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Bash
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
#!/bin/bash
|
|
123
|
+
|
|
124
|
+
# 安装依赖
|
|
125
|
+
npm install
|
|
126
|
+
|
|
127
|
+
# 构建项目
|
|
128
|
+
npm run build
|
|
129
|
+
|
|
130
|
+
# 部署
|
|
131
|
+
rsync -avz dist/ server:/var/www/blog/
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### JSON
|
|
135
|
+
|
|
136
|
+
```json
|
|
137
|
+
{
|
|
138
|
+
"name": "my-blog",
|
|
139
|
+
"version": "1.0.0",
|
|
140
|
+
"dependencies": {
|
|
141
|
+
"astro": "^5.0.0",
|
|
142
|
+
"vue": "^3.4.0"
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## 行内代码
|
|
148
|
+
|
|
149
|
+
使用单个反引号表示行内代码:
|
|
150
|
+
|
|
151
|
+
```markdown
|
|
152
|
+
使用 `npm install` 安装依赖。
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
使用 `npm install` 安装依赖。
|
|
156
|
+
|
|
157
|
+
## 代码块功能
|
|
158
|
+
|
|
159
|
+
### 复制按钮
|
|
160
|
+
|
|
161
|
+
所有代码块在悬停时都会显示复制按钮。
|
|
162
|
+
|
|
163
|
+
### 语言标签
|
|
164
|
+
|
|
165
|
+
语言名称显示在头部。
|
|
166
|
+
|
|
167
|
+
### 可折叠代码
|
|
168
|
+
|
|
169
|
+
长代码块(15+ 行)会自动折叠,带有"展开"按钮。
|
|
170
|
+
|
|
171
|
+
::: tip 试试看
|
|
172
|
+
向上滚动查看较长代码块上的展开/折叠功能。
|
|
173
|
+
:::
|
|
174
|
+
|
|
175
|
+
## 容器中的代码
|
|
176
|
+
|
|
177
|
+
代码在容器中也能正常工作:
|
|
178
|
+
|
|
179
|
+
::: tip 示例
|
|
180
|
+
```javascript
|
|
181
|
+
// 这段代码在提示容器内
|
|
182
|
+
console.log('Hello from a container!');
|
|
183
|
+
```
|
|
184
|
+
:::
|
|
185
|
+
|
|
186
|
+
## Diff 语法
|
|
187
|
+
|
|
188
|
+
展示代码变化:
|
|
189
|
+
|
|
190
|
+
```diff
|
|
191
|
+
- const old = 'before';
|
|
192
|
+
+ const new = 'after';
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
## 最佳实践
|
|
196
|
+
|
|
197
|
+
::: info 代码块技巧
|
|
198
|
+
1. **始终指定语言** 以获得正确的高亮
|
|
199
|
+
2. **保持示例简洁** - 只展示相关代码
|
|
200
|
+
3. **添加注释** 解释复杂逻辑
|
|
201
|
+
4. **测试你的代码** - 确保示例真正有效
|
|
202
|
+
:::
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
继续学习高级功能:[Mermaid 图表](./03-mermaid)。
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Mermaid 图表
|
|
3
|
+
description: 使用 Mermaid 创建流程图、时序图等
|
|
4
|
+
pubDate: 2025-01-01
|
|
5
|
+
author: jet-w
|
|
6
|
+
categories:
|
|
7
|
+
- 文档
|
|
8
|
+
tags:
|
|
9
|
+
- Mermaid
|
|
10
|
+
- 图表
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Mermaid 图表
|
|
14
|
+
|
|
15
|
+
使用 [Mermaid](https://mermaid.js.org) 直接在 Markdown 中创建精美的图表。
|
|
16
|
+
|
|
17
|
+
## 基本语法
|
|
18
|
+
|
|
19
|
+
使用 `mermaid` 语言的代码块:
|
|
20
|
+
|
|
21
|
+
````markdown
|
|
22
|
+
```mermaid
|
|
23
|
+
graph TD
|
|
24
|
+
A[开始] --> B[结束]
|
|
25
|
+
```
|
|
26
|
+
````
|
|
27
|
+
|
|
28
|
+
## 流程图
|
|
29
|
+
|
|
30
|
+
### 基本流程
|
|
31
|
+
|
|
32
|
+
```mermaid
|
|
33
|
+
graph TD
|
|
34
|
+
A[开始] --> B{决策}
|
|
35
|
+
B -->|是| C[执行操作]
|
|
36
|
+
B -->|否| D[执行其他操作]
|
|
37
|
+
C --> E[结束]
|
|
38
|
+
D --> E
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### 从左到右
|
|
42
|
+
|
|
43
|
+
```mermaid
|
|
44
|
+
graph LR
|
|
45
|
+
A[输入] --> B[处理]
|
|
46
|
+
B --> C[输出]
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### 节点形状
|
|
50
|
+
|
|
51
|
+
```mermaid
|
|
52
|
+
graph TD
|
|
53
|
+
A[矩形]
|
|
54
|
+
B(圆角)
|
|
55
|
+
C([体育场])
|
|
56
|
+
D[[子程序]]
|
|
57
|
+
E[(数据库)]
|
|
58
|
+
F((圆形))
|
|
59
|
+
G{菱形}
|
|
60
|
+
H{{六边形}}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## 时序图
|
|
64
|
+
|
|
65
|
+
```mermaid
|
|
66
|
+
sequenceDiagram
|
|
67
|
+
participant 用户
|
|
68
|
+
participant 浏览器
|
|
69
|
+
participant 服务器
|
|
70
|
+
participant 数据库
|
|
71
|
+
|
|
72
|
+
用户->>浏览器: 输入URL
|
|
73
|
+
浏览器->>服务器: HTTP请求
|
|
74
|
+
服务器->>数据库: 查询数据
|
|
75
|
+
数据库-->>服务器: 返回数据
|
|
76
|
+
服务器-->>浏览器: HTTP响应
|
|
77
|
+
浏览器-->>用户: 显示页面
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## 类图
|
|
81
|
+
|
|
82
|
+
```mermaid
|
|
83
|
+
classDiagram
|
|
84
|
+
class Animal {
|
|
85
|
+
+String name
|
|
86
|
+
+int age
|
|
87
|
+
+makeSound()
|
|
88
|
+
}
|
|
89
|
+
class Dog {
|
|
90
|
+
+String breed
|
|
91
|
+
+bark()
|
|
92
|
+
}
|
|
93
|
+
class Cat {
|
|
94
|
+
+String color
|
|
95
|
+
+meow()
|
|
96
|
+
}
|
|
97
|
+
Animal <|-- Dog
|
|
98
|
+
Animal <|-- Cat
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## 状态图
|
|
102
|
+
|
|
103
|
+
```mermaid
|
|
104
|
+
stateDiagram-v2
|
|
105
|
+
[*] --> 草稿
|
|
106
|
+
草稿 --> 审核中
|
|
107
|
+
审核中 --> 草稿: 需要修改
|
|
108
|
+
审核中 --> 已发布
|
|
109
|
+
已发布 --> 已归档
|
|
110
|
+
已归档 --> [*]
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## 甘特图
|
|
114
|
+
|
|
115
|
+
```mermaid
|
|
116
|
+
gantt
|
|
117
|
+
title 项目时间线
|
|
118
|
+
dateFormat YYYY-MM-DD
|
|
119
|
+
section 规划
|
|
120
|
+
需求分析 :a1, 2025-01-01, 7d
|
|
121
|
+
设计 :a2, after a1, 5d
|
|
122
|
+
section 开发
|
|
123
|
+
后端开发 :b1, after a2, 14d
|
|
124
|
+
前端开发 :b2, after a2, 14d
|
|
125
|
+
section 测试
|
|
126
|
+
测试 :c1, after b1, 7d
|
|
127
|
+
部署 :c2, after c1, 3d
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## 饼图
|
|
131
|
+
|
|
132
|
+
```mermaid
|
|
133
|
+
pie title 语言使用分布
|
|
134
|
+
"JavaScript" : 45
|
|
135
|
+
"TypeScript" : 30
|
|
136
|
+
"Python" : 15
|
|
137
|
+
"其他" : 10
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## 实体关系图
|
|
141
|
+
|
|
142
|
+
```mermaid
|
|
143
|
+
erDiagram
|
|
144
|
+
USER ||--o{ POST : 写
|
|
145
|
+
USER ||--o{ COMMENT : 写
|
|
146
|
+
POST ||--o{ COMMENT : 有
|
|
147
|
+
POST }|--|| CATEGORY : 属于
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## Git 图
|
|
151
|
+
|
|
152
|
+
```mermaid
|
|
153
|
+
gitGraph
|
|
154
|
+
commit id: "初始化"
|
|
155
|
+
branch develop
|
|
156
|
+
checkout develop
|
|
157
|
+
commit id: "功能A"
|
|
158
|
+
commit id: "功能B"
|
|
159
|
+
checkout main
|
|
160
|
+
merge develop
|
|
161
|
+
commit id: "发布"
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## 样式
|
|
165
|
+
|
|
166
|
+
### 自定义颜色
|
|
167
|
+
|
|
168
|
+
```mermaid
|
|
169
|
+
graph TD
|
|
170
|
+
A[开始]:::green --> B{检查}:::yellow
|
|
171
|
+
B -->|通过| C[成功]:::green
|
|
172
|
+
B -->|失败| D[错误]:::red
|
|
173
|
+
|
|
174
|
+
classDef green fill:#90EE90
|
|
175
|
+
classDef yellow fill:#FFE4B5
|
|
176
|
+
classDef red fill:#FFB6C1
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
## 提示
|
|
180
|
+
|
|
181
|
+
::: tip 最佳实践
|
|
182
|
+
1. **保持简单** - 复杂的图表会变得难以阅读
|
|
183
|
+
2. **使用有意义的标签** - 清晰的文字提高理解度
|
|
184
|
+
3. **选择正确的类型** - 根据内容匹配图表类型
|
|
185
|
+
4. **测试渲染** - 发布前预览效果
|
|
186
|
+
:::
|
|
187
|
+
|
|
188
|
+
::: info 了解更多
|
|
189
|
+
完整文档:[mermaid.js.org](https://mermaid.js.org/syntax/flowchart.html)
|
|
190
|
+
:::
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
下一步:[LaTeX 数学](./06-latex) 了解数学公式渲染。
|