docsify-docs-cn/docs/embed-files.md

152 lines
6.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 文件嵌入
docsify 4.6 开始支持嵌入任何类型的文件到文档里。你可以将文件当成 `iframe`、`video`、`audio` 或者 `code block`,如果是 Markdown 文件,甚至可以直接插入到当前文档里。
这是一个嵌入 Markdown 文件的例子。
```markdown
[filename](../_media/example.md ':include')
```
`example.md` 文件的内容将会直接显示在这里
[filename](../_media/example.md ':include')
你可以查看 [example.md](../_media/example.md ':ignore') 原始内容对比效果。
通常情况下,这样的语法将会被当作链接处理。但是在 docsify 里,如果你添加一个 `:include` 选项,它就会被当作文件嵌入。
## 嵌入的类型
当前,嵌入的类型是通过文件后缀自动识别的,这是目前支持的类型:
* **iframe** `.html`, `.htm`
* **markdown** `.markdown`, `.md`
* **audio** `.mp3`
* **video** `.mp4`, `.ogg`
* **code** other file extension
当然,你也可以强制设置嵌入类型。例如你想将 Markdown 文件当作一个 `code block` 嵌入。
```markdown
[filename](../_media/example.md ':include :type=code')
```
你会看到:
[filename](../_media/example.md ':include :type=code')
## 嵌入代码片段
有时候你并不想嵌入整个文件,可能你只想要其中的几行代码,但你还要在 CI 系统中编译和测试该文件。
```markdown
[filename](../_media/example.js ':include :type=code :fragment=demo')
```
在你的代码文件中,你需要用斜线 `/// [demo]` 包裹该片段(片段的前后都要有)。
你也可以使用 `### [demo]` 来包裹。
示例:
[filename](../_media/example.js ':include :type=code :fragment=demo')
## 标签属性
如果你嵌入文件是一个 `iframe`、`audio` 或者 `video`,你可以给这些标签设置属性。
```markdown
[cinwell website](https://cinwell.com ':include :type=iframe width=100% height=400px')
```
[cinwell website](https://cinwell.com ':include :type=iframe width=100% height=400px')
看见没?你只需要直接写属性就好了,每个标签有哪些属性建议你查看 [MDN 文档](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe)。
## 代码块高亮
如果是嵌入一个代码块,你可以设置高亮的语言,或者让它自动识别。这里是手动设置高亮语言
```markdown
[](../_media/example.html ':include :type=code text')
```
⬇️
[](../_media/example.html ':include :type=code text')
?> 如何高亮代码?你可以查看[这份文档](zh-cn/language-highlight.md)。
## 嵌入Gist
你可以将 Gist 作为 Markdown 内容或代码块嵌入。这是基于[嵌入文件](#embed-files)部分开头的方法,不过是嵌入一个原始的 Gist URL。
?> 这里**不需要**插件或修改配置来使其工作。事实上,即使你使用插件或修改配置来允许加载外部脚本,从 Gist 复制的 "Embed" `script`标签也无法加载。
### 确定Gist的元数据
从查看`gist.github.com`上的 Gist 开始。在本指南中,我们使用这个 Gist
- https://gist.github.com/anikethsaha/f88893bb563bb7229d6e575db53a8c15
从 Gist 中找出以下内容:
| 字段 | 示例 | 说明 |
| ------------ | ---------------------------------- | ------------------------------------------------------------------- |
| **Username** | `anikethsaha` | Gist 的作者 |
| **Gist ID** | `c2bece08f27c4277001f123898d16a7c` | Gist 的标识符。该标识在 Gist 的有效期内是固定的 |
| **Filename** | `content.md` | 在 Gist 中选择一个文件名。即使是单文件的 Gist也需要这样做才能嵌入 |
你将需要这些来为目标文件建立 _raw gist URL_ 。它的格式如下:
- `https://gist.githubusercontent.com/USERNAME/GIST_ID/raw/FILENAME`
下面是根据示例 Gist 举出的两个例子:
- https://gist.githubusercontent.com/anikethsaha/f88893bb563bb7229d6e575db53a8c15/raw/content.md
- https://gist.githubusercontent.com/anikethsaha/f88893bb563bb7229d6e575db53a8c15/raw/script.js
?> 另外你也可以直接点击 Gist 文件上的 _Raw_ 按钮来获取原始 URL。但是如果你使用这种方法请确保**删除**`raw/`和文件名之间的修订号,这样 URL 就会与上面的模式一致。否则当更新 Gist 时,你嵌入的 Gist 将**不会**显示最新的内容。
继续下面的一个部分,将 Gist 嵌入到 Docsify 页面上。
### 渲染 Gist 中的 Markdown 内容
这是一个很好的方法,可以将内容**无缝**地嵌入到你的文档中,而不需要将别人发送到外部链接。这种方法很适合在多个仓库的文档网站上重复使用一个 Gist比如安装说明。这种方法同样适用于您的账户或其他用户拥有的 Gist。
格式:
```markdown
[LABEL](https://gist.githubusercontent.com/USERNAME/GIST_ID/raw/FILENAME ':include')
```
例如:
```markdown
[gist: content.md](https://gist.githubusercontent.com/anikethsaha/f88893bb563bb7229d6e575db53a8c15/raw/content.md ':include')
```
你会看到:
[gist: content.md](https://gist.githubusercontent.com/anikethsaha/f88893bb563bb7229d6e575db53a8c15/raw/content.md ':include')
`LABEL`可以是任何你想要的文本。如果链接被破坏,它可以作为一个 _fallback_ 信息。所以在这里重复文件名是很有用的,万一你需要修复一个破坏的链接。它还可以使嵌入的元素一目了然。
### 渲染 Gist 中的代码块
格式与上一节相同但是在alt文本中添加了`:type=code`。与[嵌入的类型](#embedded-file-type)部分一样,语法高亮将从扩展名(如`.js`或`.py`)中**推断**,所以你可以将`type`设置为`code`。
格式:
```markdown
[LABEL](https://gist.githubusercontent.com/USERNAME/GIST_ID/raw/FILENAME ':include :type=code')
```
例如:
```markdown
[gist: script.js](https://gist.githubusercontent.com/anikethsaha/f88893bb563bb7229d6e575db53a8c15/raw/script.js ':include :type=code')
```
你会看到:
[gist: script.js](https://gist.githubusercontent.com/anikethsaha/f88893bb563bb7229d6e575db53a8c15/raw/script.js ':include :type=code')