跳到主要内容

文档编辑指南

这里总结了一些我觉得自己比较常用的 Docusaurus 写作样式,参考自官方文档以及源码

MDX 与 React

Docusaurus 原生支持 MDX v1,可以直接在 Markdown 文档中编写 JSX,并渲染为 React 组件,不过我比较喜欢以导入组件的方式进行引用。关于 MDX 的更多内容可以去阅读官方文档

高亮块

👉这是 HighLight 的效果

导出组件

可以选择直接在 md/mdx 文件里自定义组件,只需导出它即可,以 export 开头的段落即可被解析为组件,而不是文本。

export const Highlight = ({children, color}) => (
<span
style={{
backgroundColor: color,
borderRadius: '2px',
color: '#fff',
padding: '0.2rem',
}}>
{children}
</span>
);

<Highlight color="#25c2a0">Docusaurus 绿</Highlight><Highlight color="#1877F2">Facebook</Highlight>

效果如下:

Docusaurus 绿Facebook 蓝

导入组件

我喜欢简便一点的方式,并且不需要灵活切换高亮颜色,所以将它封装为组件,用导入的方式进行使用

import HighLight from "@site/src/components/HighLight"

<HighLight>这是 HighLight 的效果</HighLight>

效果如下:

👉这是 HighLight 的效果

选项卡

This is an apple 🍎
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

<Tabs
defaultValue="apple"
values={[
{label: 'Apple', value: 'apple'},
{label: 'Orange', value: 'orange'},
{label: 'Banana', value: 'banana'},
]}>
<TabItem value="apple">This is an apple 🍎</TabItem>
<TabItem value="orange">This is an orange 🍊<br/></TabItem>
<TabItem value="banana">This is a banana 🍌<br/></TabItem>
</Tabs>

还可以设置同步选项,减少重复性操作

Use Ctrl + C to copy.
Use Ctrl + V to paste.
<Tabs groupId="operating-systems">
<TabItem value="win" label="Windows">Use Ctrl + C to copy.</TabItem>
<TabItem value="mac" label="macOS">Use Command + C to copy.</TabItem>
</Tabs>

<Tabs groupId="operating-systems">
<TabItem value="win" label="Windows">Use Ctrl + V to paste.</TabItem>
<TabItem value="mac" label="macOS">Use Command + V to paste.</TabItem>
</Tabs>

根据 groupId 来进行关联,不同的 groupId 会有不同的效果

I am Windows.
I am Windows.
<Tabs groupId="operating-systems">
<TabItem value="win" label="Windows">I am Windows.</TabItem>
<TabItem value="mac" label="macOS">I am macOS.</TabItem>
<TabItem value="linux" label="Linux">I am Linux.</TabItem>
</Tabs>

<Tabs groupId="test">
<TabItem value="win" label="Windows">I am Windows.</TabItem>
<TabItem value="mac" label="macOS">I am macOS.</TabItem>
<TabItem value="unix" label="Unix">Unix is unix.</TabItem>
</Tabs>

折叠块

Toggle me!
This is the detailed content

Nested toggle! Some surprise inside...
😲😲😲😲😲

Testing...
🤨
<details>
<summary>Toggle me!</summary>
<div>
<div>This is the detailed content</div>
<br/>
<details>
<summary>Nested toggle! Some surprise inside...</summary>
<div>😲😲😲😲😲</div>
<br/>
<details>
<summary>Testing...</summary>
<div>🤨</div>
</details>
</details>
</div>
</details>

选项块里也可以嵌入折叠块(其他组件也可以类似地进行嵌套)

One!
Toggle me!
This is the detailed content

Nested toggle! Some surprise inside...
😲😲😲😲😲

告示块

备注

note

👋

note 自定义标题

提示

tip

信息

info

警告

caution

危险

danger

:::note
**note**
:::

:::note 👋
**note** 自定义标题
:::

:::tip
**tip**
:::

:::info
**info**
:::

:::caution
**caution**
:::

:::danger
**danger**
:::

代码块

比如下面一段代码
ts 表示用 ts 语言渲染代码块
{1,4,6-8} 表示第 1 行、第 4 行、第 6-8 行代码高亮,分开的用 , 隔开,连续的用 - 连接
title 表示代码块的标题

```ts {1,4,6-8} title="src/clientModules/routeModules.ts"
your code...
```
src/clientModules/routeModules.ts
import mitt from 'mitt';
import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment';

const emitter = mitt();

if (ExecutionEnvironment.canUseDOM) {
window.emitter = emitter;
}

export function onRouteDidUpdate() {
if (ExecutionEnvironment.canUseDOM) {
setTimeout(() => {
window.emitter.emit('onRouteDidUpdate');
});
}
// https://github.com/facebook/docusaurus/issues/8278
}

下面的代码块用于表示代码的修改

````diff
+ code_1
- code_2
````
module.exports = {
+ themeConfig: {
- algolia: {
appId: 'YOUR_APP_ID', // Application ID
apiKey: 'YOUR_SEARCH_API_KEY', // Search-Only API Key
indexName: 'YOUR_INDEX_NAME' // Index name
}
}
};

外链标识

import HyperLink from "@site/src/components/HyperLink";

- <HyperLink type="external" link="https://www.cordcloud.biz/">
CordCloud &nbsp;
</HyperLink>

- <HyperLink type="external" link="https://cyoooo.co/">
KuLi &nbsp;
</HyperLink>
(Testing)

不过我觉得有点麻烦,还不如用普通的外链语法,这个标识要不要无所谓

内嵌 bilibili 视频

import BVideo from "@site/src/components/BVideo";

<BVideo src="//player.bilibili.com/player.html?aid=379284479&bvid=BV17f4y1M7mq&cid=445379085&page=1" width="100%" height="360" frameborder="no" scrolling="no" allowfullscreen="allowfullscreen" bsrc="https://www.bilibili.com/video/BV17f4y1M7mq/"/>

但是引用的视频清晰度只有 360P

设置博客内部的跳转链接

跳转到当前文档

跳转到高亮块

跳转到[高亮块](#高亮块)

跳转到另一个文档

跳转到部署

跳转到[部署](/docs/Site/Docusaurus/部署.md)

跳转到部署-进阶部署

跳转到[部署-进阶部署](/docs/Site/Docusaurus/部署.md/#进阶部署)

跳转到目标文件

可以通过在 Markdown 文件中直接链接静态资源(比如 docx 文件、图片等)来获取目标文件,例如:

在 Markdown 里下载这个 docx

[在 Markdown 里下载这个 docx](@site/static/doc/example.docx)

快捷键样式

ctrl + C
import Shortcut from "@site/src/components/Shortcut/index";

<Shortcut>ctrl</Shortcut> + <Shortcut>C</Shortcut>

图片 flex 布局

1

2

import DisplayFlex from '@site/src/components/DisplayFlex'

<DisplayFlex>

![1](https://shake-picture.oss-cn-guangzhou.aliyuncs.com/Docusaurus/docs/Blog_Building/Docusaurus/20230125010816.png)

![2](https://shake-picture.oss-cn-guangzhou.aliyuncs.com/Docusaurus/docs/Blog_Building/Docusaurus/20230125010903.png)

</DisplayFlex>

浏览窗口

浏览器窗口

这是官方样式的浏览器窗口

import BrowserWindow2 from '@site/src/components/BrowserWindow2';

// <BrowserWindow2 url="www.example.com">
<BrowserWindow2>
**这是官方样式的浏览器窗口**
</BrowserWindow2>

这是我根据开源样式修改的浏览器窗口

import BrowserWindow from '@site/src/components/BrowserWindow';

<BrowserWindow url="http://www.shaking.site">
**这是我根据开源样式修改的浏览器窗口**
</BrowserWindow>

阅读卡片窗口

这是根据开源样式设计的阅读卡片窗口
(用来写摘抄啥的)

摘自 —— xxxx

2023-xx-xx
import ReadingCard from '@site/src/components/ReadingCard'

<ReadingCard book="xxxx" date="2023-xx-xx">
这是根据开源样式设计的阅读卡片窗口<br/>
</ReadingCard>

附录