# Markdown 拓展
# 标题锚点
所有的标题将会自动地应用锚点链接,锚点的渲染规则可以通过 enhanceApp 中 mdConfig.anchor
来配置。
# 链接
# 内部链接
网站内部的链接,将会被转换成 <a>
用于 SPA 导航。同时,站内的每一个文件夹下的 README.md
或者 index.md
文件都会被自动编译为 index.html
,对应的链接将被视为 /
。
以如下的文件结构为例:
.
├─ README.md
├─ foo
│ ├─ README.md
│ ├─ one.md
│ └─ two.md
└─ bar
├─ README.md
├─ three.md
└─ four.md
假设你现在在 foo/one.md
中:
[Home](/) <!-- 跳转到根部的 README.md -->
[foo](/foo/) <!-- 跳转到 foo 文件夹的 index.html -->
[foo heading](./#heading) <!-- 跳转到 foo/index.html 的特定标题位置 -->
[bar - three](../bar/three.md) <!-- 具体文件可以使用 .md 结尾(推荐) -->
[bar - four](../bar/four.html) <!-- 也可以用 .html -->
# 外部链接
外部的链接将会被自动地设置为 target="_blank" rel="noopener noreferrer"
:
你可以自定义通过配置 enhanceApp 中 mdConfig.externalLinks
来自定义外部链接的特性。
# Front Matter
MdPress 提供了对 YAML front matter 开箱即用的支持:
---
title: Blogging Like a Hacker
lang: en-US
---
这些数据可以在当前 markdown 的正文,或者是任意的自定义或主题组件中使用。
想了解更多,请移步 Front Matter。
# GitHub 风格的表格
输入
| Tables | Are | Cool |
| ------------- |:-------------:| -----:|
| col 3 is | right-aligned | $1600 |
| col 2 is | centered | $12 |
| zebra stripes | are neat | $1 |
输出
Tables | Are | Cool |
---|---|---|
col 3 is | right-aligned | $1600 |
col 2 is | centered | $12 |
zebra stripes | are neat | $1 |
# Emoji
输入
:tada: :100:
输出
🎉 💯
你可以在这个列表找到所有可用的 Emoji。
# 目录
输入
[[toc]]
输出
目录(Table of Contents)的渲染可以通过 markdown.toc
选项来配置。
# 自定义容器 默认主题
输入
::: tip
这是一个提示
:::
::: warning
这是一个警告
:::
::: danger
这是一个危险警告
:::
::: details
这是一个详情块,在 IE / Edge 中不生效
:::
输出
::: tip 这是一个提示 :::
::: warning 这是一个警告 :::
::: danger 这是一个危险警告 :::
::: details 这是一个详情块,在 IE / Edge 中不生效 :::
你也可以自定义块中的标题:
::: danger STOP
危险区域,禁止通行
:::
::: details 点击查看代码
```js
console.log('你好,MdPress!')
```
:::
::: danger STOP 危险区域,禁止通行 :::
::: details 点击查看代码
console.log('你好,MdPress!')
:::
# 代码块中的语法高亮
MdPress 使用了 Prism 来为 markdown 中的代码块实现语法高亮。Prism 支持大量的编程语言,你需要做的只是在代码块的开始倒勾中附加一个有效的语言别名:
输入
``` js
export default {
name: 'MyComponent',
// ...
}
```
输出
export default {
name: 'MyComponent',
// ...
}
输入
``` html
<ul>
<li
>
test
</li>
</ul>
```
输出
<ul>
<li
>
test
</li>
</ul>
在 Prism 的网站上查看 合法的语言列表。
# 代码块中的行高亮
输入
``` js {4}
export default {
data () {
return {
msg: 'Highlighted!'
}
}
}
```
输出
export default {
data () {
return {
msg: 'Highlighted!'
}
}
}
# 行号
你可以通过配置来为每个代码块显示行号:
module.exports = {
markdown: {
lineNumbers: true
}
}
- 示例:
# 导入代码段 beta
你可以通过下述的语法导入已经存在的文件中的代码段:
<<< @/filepath
它也支持 行高亮:
<<< @/filepath{highlightLines}
输入
<<< @/../@mdpress/markdown/__tests__/fragments/snippet.js{2}
输出
export default function () {
// ..
}
::: tip 注意
由于代码段的导入将在 webpack 编译之前执行,因此你无法使用 webpack 中的路径别名,此处的 @
默认值是 process.cwd()
。
:::
# 进阶配置
MdPress 使用 markdown-it 来渲染 Markdown,上述大多数的拓展也都是通过自定义的插件实现的。想要进一步的话,你可以通过 .mdpress/enhaceApp.js
的 mdConfig
选项,来对当前的 markdown-it
实例做一些自定义的配置:
export default ({
mdConfig, // 当前应用的 Markdown 额外配置
}) => {
mdConfig = Object.assign({},mdConfig,{
// markdown-it-anchor 的选项
anchor: { permalink: false },
// markdown-it-toc 的选项
toc: { includeLevel: [1, 2] },
extendMarkdown: md => {
// 使用更多的 markdown-it 插件!
md.use(require('markdown-it-xxx'))
}
})
}