docsify 是一個動態生成文檔網站的工具。不一樣於 GitBook、Hexo 的地方是它不會生成將 .md 轉成 .html 文件,全部轉換工做都是在運行時進行。javascript
這將很是實用,若是隻是須要快速的搭建一個小型的文檔網站,或者不想由於生成的一堆 .html 文件「污染」 commit 記錄,只須要建立一個 index.html 就能夠開始寫文檔並且直接部署在 GitHub Pages。css
index.html
並引入docsify文件docsify使用方式很簡單,只須要在項目中建立一個index.html
文件,內容可以以下:html
<!DOCTYPE html> <html> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width,initial-scale=1"> <meta charset="UTF-8"> <link rel="stylesheet" href="//unpkg.com/docsify/themes/vue.css"> </head> <body> <div id="app"></div> <script> window.$docsify = { //... } </script> <script src="//unpkg.com/docsify/lib/docsify.min.js"></script> </body> </html>
而後在項目中建立一個README.md
文件:vue
## 我是首頁 這是個人首頁介紹
若是你的系統安裝了Python 的話,可使用Python來啓動一個服務:java
python -m SimpleHTTPServer 3000 Serving HTTP on 0.0.0.0 port 3000 ... 127.0.0.1 - - [03/Jan/2019 13:45:27] "GET / HTTP/1.1" 200 -
而後在瀏覽器中輸入http://localhost:3000/
查看瀏覽效果。node
若是沒有Python,仍是可使用http-server
啓動服務,
可在終端輸入npm install http-server -g
來安裝http-server
。python
http-server Starting up http-server, serving ./ Available on: http://127.0.0.1:8080 http://172.24.70.142:8080 Hit CTRL-C to stop the server
而後在瀏覽器中輸入http://127.0.0.1:8080
查看瀏覽效果。react
注意:
1.在此模式下編輯文件保存後,須要手動刷新瀏覽器才能看見修改的效果,下面介紹的docsify-cli
可實現自動查看效果。
2.強烈建議把index.html
文件中的docsify.min.js
和vue.css
文件複製到本地項目,而後使用以下方式引入:git<link rel="stylesheet" href="./vue.css"> <script src="./docsify.min.js"></script>這樣作的好處是不在依賴網絡環境了。github
docsify-cli
來開發docsify-cli 工具,能夠方便建立及本地預覽文檔網站。
docsify須要本地先安裝node
, 若是沒有安裝node,可在node官網選擇對應操做系統下載安裝:https://nodejs.org/zh-cn/
終端輸入npm i docsify-cli -g
進行全局安裝:
npm i docsify-cli -g /usr/local/bin/docsify -> /usr/local/lib/node_modules/docsify-cli/bin/docsify > fsevents@1.2.4 install /usr/local/lib/node_modules/docsify-cli/node_modules/fsevents > node install [fsevents] Success: "/usr/local/lib/node_modules/docsify-cli/node_modules/fsevents/lib/binding/Release/node-v57-darwin-x64/fse.node" already installed Pass --update-binary to reinstall or --build-from-source to recompile > docsify@4.8.6 postinstall /usr/local/lib/node_modules/docsify-cli/node_modules/docsify > opencollective postinstall Thanks for installing docsify 🙏 Please consider donating to our open collective to help us maintain this package. 👉 Donate: https://opencollective.com/docsify/donate + docsify-cli@4.3.0 added 456 packages from 206 contributors in 32.827s
安裝結束後使用docsify -v
查看是否安裝成功:
docsify -v docsify-cli version: 4.3.0
首先須要建立一個項目目錄:
mkdir docsify
進入項目目錄後,使用docsify init ./
來初始化一個項目:
cd docsify docsify init ./ Initialization succeeded! Please run docsify serve ./
tree -a . ├── .nojekyll ├── README.md └── index.html
初始化成功後,docsify
目錄會生成以下幾個文件:
index.html
入口文件README.md
會作爲主頁內容渲染.nojekyll
用於阻止 GitHub Pages 會忽略掉下劃線開頭的文件、
.nojekyll
文件很重要,若是網站部署到GitHub Pages
時,必定要注意這個文件。
直接編輯 ./README.md 就能更新網站內容,固然也能夠添加其餘.md
文件。
終端輸入docsify serve ./
來啓動服務:
docsify serve ./ Serving /Users/dragon/tmp/docsify now. Listening at http://localhost:3000
而後瀏覽器打開http://localhost:3000
就能看見效果。
當修改文件保存後, docsify serve ./
服務會自動實時更新。
若是須要建立多個頁面,或者須要多級路由的網站,在docsify
裏也能很容易的實現。例如建立一個guide.md
文件,那麼對應的路由就是/#/guide
。
若是你的目錄結構以下:
-| ./ -| README.md -| guide.md -| zh-cn/ -| README.md -| guide.md
那麼對應的訪問頁面將是:
./README.md => http://domain.com ./guide.md => http://domain.com/guide ./zh-cn/README.md => http://domain.com/zh-cn/ ./zh-cn/guide.md => http://domain.com/zh-cn/guide
默認狀況下,側邊欄會根據當前文檔的標題生成目錄。
首先須要在index.html
文件中的window.$docsify
添加loadSidebar: true,
選項:
<script> window.$docsify = { loadSidebar: true } </script> <script src="//unpkg.com/docsify"></script>
接着在項目根目錄建立_sidebar.md
文件,內容格式以下:
* [home1](home1) * [home2](home2) * [bar](bar/) * [bar/a](bar/a)
注:配置了loadSidebar
後就不會生成默認的側邊欄了。
_sidebar.md
文件的說明_sidebar.md
文件,那麼全部頁面都將使用這個一個配置,也就是全部頁面的側邊欄都同樣。_sidebar.md
文件,那麼這個子目錄下的全部頁面將使用這個文件的側邊欄。_sidebar.md
的加載邏輯是從每層目錄下獲取文件,若是當前目錄不存在該文件則回退到上一級目錄。例如當前路徑爲/zh-cn/more-pages
則從/zh-cn/_sidebar.md
獲取文件,若是不存在則從/_sidebar.md
獲取。若是子目錄有_sidebar.md
,但你就想使用根目錄的_sidebar.md
,
可在index.html
文件中的window.$docsify
添加alias
字段:
<script> window.$docsify = { loadSidebar: true, alias: { '/.*/_sidebar.md': '/_sidebar.md' } } </script>
配置alias
字段後,全部頁面都會顯示項目根目錄_sidebar.md
文件的配置做爲側邊欄,子目錄的_sidebar.md
文件會失效。
定製的側邊欄僅顯示了頁面的連接。
還能夠設置在側邊欄顯示當前頁面的目錄(標題)。
須要在index.html
文件中的window.$docsify
添加subMaxLevel
字段來設置:
<script> window.$docsify = { loadSidebar: true, subMaxLevel: 3 } </script> <script src="//unpkg.com/docsify"></script>
subMaxLevel說明:
subMaxLevel類型是number(數字),表示顯示的目錄層級
注意:若是md文件中的第一個標題是一級標題,那麼不會顯示在側邊欄,如上圖所示
值 | 說明 |
---|---|
0 | 默認值,表示不顯示目錄 |
1 | 顯示一級標題(h1 ) |
2 | 顯示1、二級標題(h1 ~ h2 ) |
3 | 顯示1、2、三級標題(h1 ~ h3 ) |
n | n是數字,顯示1、2、....n 級標題(h1 ~ hn ) |
在md文件中標題的寫法:
# 這是一級標題,對應HTML中<h1>標籤 ## 這是二級標題,對應HTML中<h2>標籤 ### 這是三級標題,對應HTML中<h3>標籤 #### 這是四級標題,對應HTML中<h4>標籤
注意: 若是md文件的第一個標題是一級標題,那麼默認已經忽略了。
當設置了 subMaxLevel 時,默認狀況下每一個標題都會自動添加到目錄中。若是你想忽略特定的標題,能夠給它添加 {docsify-ignore} :
# Getting Started ## Header {docsify-ignore} 該標題不會出如今側邊欄的目錄中。
要忽略特定頁面上的全部標題,你能夠在頁面的第一個標題上使用 {docsify-ignore-all} :
# Getting Started {docsify-ignore-all} ## Header 該頁面全部標題都不會出如今側邊欄的目錄中。
在使用時, {docsify-ignore} 和 {docsify-ignore-all} 都不會在頁面上顯示。
docsify默認是沒有導航欄的,能夠經過配置來顯示導航欄。
index.html
中定義導航欄若是導航的連接少,則能夠直接在index.html
文件直接定義導航欄,要注意連接要以#/
開頭:
<body> <nav> <a href="#/">項目</a> <a href="#/home1">home1</a> <a href="#/bar/a">bar/a</a> </nav> </body>
首先須要在index.html
文件中的window.$docsify
添加loadNavbar: true,
選項:
<script> window.$docsify = { loadNavbar: true } </script> <script src="//unpkg.com/docsify"></script>
接着在項目根目錄建立_navbar.md
文件,內容格式以下:
* [home1](home1) * [home2](home2) * [bar](bar/) * [bar/a](bar/a)
注意:
1.若是使用配置文件來設置導航欄,那麼在index.html
中定義的導航欄只有在定製的首頁纔會生效,其餘頁面會被覆蓋。
2.若是隻在根目錄有一個_navbar.md
文件,那麼全部頁面都將使用這個一個配置,也就是全部頁面的導航欄都同樣。
3.若是一個子目錄中有_navbar.md
文件,那麼這個子目錄下的全部頁面將使用這個文件的導航欄。
4._navbar.md
的加載邏輯是從每層目錄下獲取文件,若是當前目錄不存在該文件則回退到上一級目錄。例如當前路徑爲/zh-cn/more-pages
則從/zh-cn/_navbar.md
獲取文件,若是不存在則從/_navbar.md
獲取。
若是導航內容過多,能夠寫成嵌套的列表,會被渲染成下拉列表的形式:
* 根目錄 * [home1](home1) * [home2](home2) * [guide](guide) * bar目錄 * [bar](bar/) * [a文件](bar/a) * [b文件](bar/b) * foo目錄 * [one](foo/one)
docsify默認是沒有封面的,默認有個首頁./README.md
。
經過設置coverpage
參數,能夠開啓渲染封面的功能。
首先須要在index.html
文件中的window.$docsify
添加coverpage: true
選項:
<script> window.$docsify = { coverpage: true } </script> <script src="//unpkg.com/docsify"></script>
接着在項目根目錄建立_coverpage.md
文件,內容格式以下:
![logo](_media/icon.svg) # 個人文檔網站 ## 我的文檔網站 > 一個神奇的文檔網站生成鞏固 * Simple and lightweight (~12kb gzipped) * Multiple themes * Not build static html files [GitHub](https://github.com/docsifyjs/docsify/) [Get Started](#quick-start) [Get Started](#quick-start)
注:一份文檔只會在根目錄下加載封面,其餘頁面或者二級目錄下都不會加載。
目前的背景是隨機生成的漸變色,每次刷新都會顯示不一樣的顏色。
docsify封面支持自定義背景色或者背景圖,在_coverpage.md
文檔末尾添加:
<!-- 背景圖片 --> ![](_media/bg.png) <!-- 背景色 --> ![color](#2f4253)
注意:
1.自定義背景配置必定要在_coverpage.md
文檔末尾。
2.背景圖片和背景色只能有一個生效.
3.背景色必定要是#2f4253
這種格式的。
配置了封面後,封面和首頁是同時出現的,封面在上面,首頁在下面。
經過設置onlyCover
參數,可讓docsify網站首頁只顯示封面,
原來的首頁經過http://localhost:3000/#/README
訪問。
在index.html
文件中的window.$docsify
添加onlyCover: true,
選項:
<script> window.$docsify = { coverpage: true, onlyCover: true, } </script> <script src="./docsify.min.js"></script>
經過此配置能夠把
./README.md
文件獨立出來,當成項目真正的README介紹文件。
若是你的文檔網站是多語言的,或許你須要設置多個封面。
例如你的文檔目錄結構以下
. └── docs ├── README.md ├── guide.md ├── _coverpage.md └── zh-cn ├── README.md └── guide.md └── _coverpage.md
那麼你能夠在index.html
文件中的window.$docsify
這麼配置:
window.$docsify = { coverpage: ['/', '/zh-cn/'] };
或者具體指名文件名:
window.$docsify = { coverpage: { '/': 'cover.md', '/zh-cn/': 'cover.md' } };
GitHub Pages 支持從三個地方讀取文件:
一、master
分支
二、master
分支下的docs
目錄
三、gh-pages
分支
一、若是你的文檔直接是在項目根目錄寫的,那麼可直接把代碼推送到master分支上,GitHub Pages
裏選擇master branch
.
2.若是你的文檔是在master分支下的docs/
目錄下編寫的,那麼可直接把代碼推送到master分支上,GitHub Pages
裏選擇master branch/docs folder
.
本例子項目是直接在根目錄中編寫的,因此GitHub Pages
裏選擇master branch
的方式部署。
首先在github網站上建立好倉庫,而後終端打開項目目錄:
git init git add . git commit -m 'docsify項目初始化' git remote add origin https://github.com/username/docsify.git git push --set-upstream origin master
代碼推送到github上後,打開github的倉庫,選擇Settings
-> GitHub Pages
-> master branch
-> save
。
https://spiritree.github.io/n...
https://ripperhe.com/awesome-...
全文搜索插件會根據當前頁面上的超連接獲取文檔內容,在 localStorage 內創建文檔索引。默認過時時間爲一天,固然咱們能夠本身指定須要緩存的文件列表或者配置過時時間。
<script> window.$docsify = { // 完整配置參數 search: { maxAge: 86400000, // 過時時間,單位毫秒,默認一天 paths: [], // or 'auto',匹配文件路徑 placeholder: 'Type to search', // 搜索提示框文字, 支持本地化,例子在下面 // placeholder: { // '/zh-cn/': '搜索', // '/': 'Type to search' // }, noData: 'No Results!', // 找不到結果文字提示,支持本地化,例子在下面 // noData: { // '/zh-cn/': '找不到結果', // '/': 'No Results' // }, depth: 2, // 搜索標題的最大程級, 1 - 6 } } </script> <!-- 引入搜索模塊 --> <script src="//unpkg.com/docsify/lib/plugins/search.js"></script>
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>
Gitalk具體使用教程:https://segmentfault.com/a/11...
docsify其餘插件:https://docsify.js.org/#/zh-c...
在網上找到一個樣式:https://jhildenbiddle.github....
使用方法,在HTML文件中引入:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsify-themeable@0/dist/css/theme-simple.css">
docsify中文官網:https://docsify.js.org/#/zh-cn/