docsify , 網站文檔動態生成工具,類似gitbook
特性
- 無需構建,寫完文檔直接發布
- 容易使用並且輕量 (~19kB gzipped)
- 智能的全文搜索
- 提供多套主題
- 豐富的 API
- 支持 Emoji
- 兼容 IE10+
- 支持 SSR
安裝
npm i docsify-cli -g
進入項目根目錄並初始化
docsify init ./docs
之后docs目錄下會生成以下幾個文件
index.html 入口文件
README.md 會做為主頁內容渲染
.nojekyll 用於阻止 GitHub Pages 會忽略掉下划線開頭的文件
運行服務
docsify serve ./docs
打開瀏覽器 http://localhost:3000
多頁文檔
創建多個頁面,或者多級路由。創建一個 guide.md 文件,那么對應的路由就是 /#/guide。
例如這樣一個目錄結構
-| docs/
-| README.md
-| guide.md
-| zh-cn/
-| README.md
-| guide.md
docs/README.md => http://domain.com
docs/guide.md => http://domain.com/guide
docs/zh-cn/README.md => http://domain.com/zh-cn/
docs/zh-cn/guide.md => http://domain.com/zh-cn/guide
設置封面
設置 coverpage 參數
window.$docsify = {
coverpage: true
}
接着在根目錄創建 _coverpage.md 文件
背景自定義
默認的背景是隨機生成的漸變色
如要自定義背景圖片或者背景色,在_coverpage.md中設置如下內容
<!-- 背景圖片 -->

<!-- 背景色 -->

自定義導航欄
直接在 HTML 里定義導航欄,鏈接以 #/ 開頭
在index.html的body中添加以下代碼
<nav>
<a href="#/">EN</a>
<a href="#/zh-cn/">中文</a>
</nav>
<div id="app"></div>
接着配置 loadNavbar
window.$docsify = {
loadNavbar: true
}
在navbar.md_中添加以下鏈接
* [En](/)
* [中文](/zh-cn/)
側邊欄導航
默認側邊欄會根據當前文檔的標題生成目錄。也可以設置文檔鏈接,通過 Markdown 文件生成
先配置 loadSidebar 選項
window.$docsify = {
loadSidebar: true
}
然后創建 _sidebar.md 文件,這樣我們左側目錄就會顯示出來
* [首頁](zh-cn/)
* [指南](zh-cn/guide)
需要在文檔根目錄創建 .nojekyll 命名的空文件,阻止 GitHub Pages 忽略命名是下划線開頭的文件。
插件
添加全文搜索
引入search.js
<script src="//unpkg.com/docsify/lib/plugins/search.js"></script>
配置search選項
search: {
maxAge: 86400000, // 過期時間,單位毫秒,默認一天
paths: [], // or 'auto'
placeholder: 'Type to search',
// 支持本地化
placeholder: {
'/zh-cn/': '搜索',
'/': 'Type to search'
},
noData: 'No Results!',
// 支持本地化
noData: {
'/zh-cn/': '找不到結果',
'/': 'No Results'
},
// 搜索標題的最大程級, 1 - 6
depth: 2
}
添加評論系統
Gitalk,一個現代化的,基於Preact和Github Issue的評論系統。
<link rel="stylesheet" href="//unpkg.com/gitalk/dist/gitalk.css">
<script src="//unpkg.com/docsify/lib/plugins/gitalk.min.js"></script>
<script src="//unpkg.com/gitalk/dist/gitalk.min.js"></script>
<script>
const gitalk = new Gitalk({
clientID: 'Github Application Client ID',
clientSecret: 'Github Application Client Secret',
repo: 'Github repo',
owner: 'Github repo owner',
admin: ['Github repo collaborators, only these guys can initialize github issues'],
// facebook-like distraction free mode
distractionFreeMode: false
})
</script>
clientID和clientSecret需要在github上創建一個app生成