docsify 的使用
docsify 是一套简单的文档网站生成工具,不像其它静态博客会生成一堆文件,它的转换在运行时,所以比较清爽,只要一个 html 文件。
具体的操作看官网就行,下面记录一些在使用过程中不太容易记得及遇到的一些问题。
-
在标题后写
<!-- {docsify-ignore} -->
排除在侧边栏显示,在文档第一个标题后添加<!-- {docsify-ignore-all} -->
可以忽略文档标题。 -
文件名后加内容以更好的支持 SEO,比如
[Guide](guide.md "The greatest guide in the world")
。 -
扩展语法,包含强调内容,图片尺寸,html 和markdown 混用等。
-
搜索配置有一项叫
pathNamespaces: ['/en']
,就是如果有多语言,当切换到 en 时,只在 en 目录搜索,不然会搜到中文里的内容。 -
用了 PWA 模式,导致本地预览无法自动刷新,清除浏览器数据才行,还是别开启了。
-
评论系统 Disqus 需要科学上网。waline 或 valine 用的 leancloud,国内要备案,国际版真正发评论时也得科学上网。Gitalk 要填一些 id/secret,且库必须公开,文件一看源代码全都显示出来。cusdis 如果自托管需要连接一个服务器上的数据库。算了。
-
CDN 配的这个
<script src="//cdn.jsdelivr.net/npm/docsify/lib/docsify.min.js"></script>
不能用,会引起搜索框出错,页面无法滑动。 -
代码高亮要支持一种语言就要加一句 script,比如要支持 java,就要添加
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-java.min.js"></script>
,支持的语言种类在 Prism (prismjs.com)。 -
formatUpdated: '{YY}-{MM}-{DD} {HH}:{mm}'
,记录的是文章最后的修改时间,然后在文档里面插入{docsify-updated}
,会解析成定义格式的日期时间。docsify-updated 插件自动在每个页面显示更新时间,代替formatUpdated
配置。但是部署到 Vercel 后,两种方式都无法获取到时间。 -
mermaid 组件的支持
文档有两句被注释掉了,因为它的说明文档不需要引入,但实际上是需要的,css 放到 head 里,script 放到 body 里。然后文档上的var num = 0; mermaid.initialize({ startOnLoad: false });
这两句也极其的莫名其妙,不知道放在哪里,后来用Docsify画图建模Mermaid插件支持写的方法可以正常显示,和官方的代码对比,发现官方的配置只要使用下面的就能正常显示:
markdown: { renderer: { code: function(code, lang) { if (lang === "mermaid") { // 最大的问题就是原来 code 这里写的是 // mermaid.render('mermaid-svg-' + num++, code) // 但这句执行有问题,不懂 return ('<div class="mermaid">' + code + "</div>"); } return this.origin.code.apply(this, arguments); } } }
-
Footer 加点东西
plugins: [ function(hook) { var footer = [ // 就是字符串拼接出 html 语句 '<hr/>', '<footer>', '<span>©2023.</span>', '<span>Powered by ', '<a href="https://docsify.js.org/#/" target="_blank">docsify</a> v', window.Docsify.version, // 能获取到当前用的版本 '</span>', '</footer>' ].join(''); hook.afterEach(function(html) { return html + footer; }); } ]
-
更多的插件。太多属于年久失修状态,下面是一些能用的
- docsify-puml:支持 plantuml 解析显示。
- docsify-corner:自定义右上角折角。
- docsify-sidebar-collapse:在侧边栏
_sidebar
里写的多级目录可以折叠展开。 - docsify-kroki:支持各种图形渲染,包括 mermaid,plantuml,没有试用。
- docsify-drawio:支持 drawio 绘图。
- docsify-image-caption:优化图片显示效果,标题在最下方,可以显示在文字行内。
- docsify-versioned-plugin:文档的多版本选择。
- docsify-termynal:一个终端窗口。
- docsify-hide-code:代码块不全部展示,折叠起来。
- docsify-busuanzi:不蒜子访问统计。
- ~~docsify-slides:在文档中写
<!-- slide:break -->
将文档变成两列布局显示。~~影响封面显示。 - ~~docsify-dark-mode:深色模式切换。~~主题色配置不太好调,影响所有的文字颜色。