docsify 4.0 发布,支持服务端渲染(SSR)

docsify 是一个无需编译轻量级的文档生成工具,从发布到现在已经有半年多。经历了 110 个版本迭代,在 GitHub 收获 2k 多 stars,能搜索的数据显示有 300 多个项目正在使用 docsify。

docsify 可以让你只需将 md 文档直接部署在 GitHub Pages 然后创建一个 index.html 文件,将工具通过 script 标签引入即可。少量的配置就让你拥有一份精致的文档网站。

这本来是一个我拿来做实验的项目,所以能想到比较有意思的特性都会加进去。比如利用 CSS 变量特性做主题色定制、前段时间很火的 PWA 我也尝试性的加入、还有为 docsify 开发的 vue 代码编辑和预览的工具 vuep。今天我要宣布一个新特性——服务端渲染(SSR)

效果

先看例子 docsify.now.sh

文档依旧是部署在 GitHub Pages 上,Node 服务部署在 now.sh 里,渲染的内容是从 GitHub Pages 上同步过来的。所以静态部署文档的服务器和服务端渲染的 Node 服务器是分开的,也就是说你还是可以用之前的方式更新文档,并不需要每次都部署。

快速开始

如果你熟悉 now 的使用,接下来的介绍就很简单了。先创建一个新项目,并安装 nowdocsify-cli

mkdir my-ssr-demo && cd my-ssr-demo
npm init -y
npm i now docsify-cli -D复制代码

配置 package.json

{
  "scripts": {
    "start": "docsify start .",
    "deploy": "now -p"
  },
  "docsify": {
    "config": {
      "basePath": "https://docsify.js.org/",
      "loadSidebar": true,
      "loadNavbar": true
    }
  }
}复制代码

如果你还没有创建文档,可以参考之前的文章。其中 basePath 为文档所在的路径,可以填你的 docsify 文档网站。

配置可以单独写在配置文件内,然后通过 --config config.js 加载。

渲染的基础模版也可以自定义,配置在 template 属性上,例如

"docsify": {
      "template": "./ssr.html",
    "config": {
      "basePath": "https://docsify.js.org/",
      "loadSidebar": true,
      "loadNavbar": true
    }
  }复制代码

ssr.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>docsify</title>
  <link rel="icon" href="_media/favicon.ico">
  <meta name="keywords" content="doc,docs,documentation,gitbook,creator,generator,github,jekyll,github-pages">
  <meta name="description" content="A magical documentation generator.">
  <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  <link rel="stylesheet" href="//unpkg.com/docsify/lib/themes/vue.css" title="vue">
</head>
<body>
  <!--inject-app-->
  <!--inject-config-->
</body>
<script src="//unpkg.com/docsify/lib/docsify.min.js"></script>
<script src="//unpkg.com/docsify/lib/plugins/search.min.js"></script>
</html>复制代码

其中 <!--inject-app--><!--inject-config--> 为占位符,会自动将渲染后的 html 和配置内容注入到页面上。

现在,你可以运行 npm start 预览效果,如果没有问题就通过 npm run deploy 部署服务。

npm start
# open http://localhost:4000

npm run deploy
# now ...复制代码

更多玩法

docsify start 其实是依赖了 docsify-server-renderer 模块,如果你感兴趣,你完全可以用它自己实现一个 server,可以加入缓存等功能。

var Renderer = require('docsify-server-renderer')
var readFileSync = require('fs').readFileSync

// init
var renderer = new Renderer({
  template: readFileSync('./docs/index.template.html', 'utf-8').,
  config: {
    name: 'docsify',
    repo: 'qingwei-li/docsify'
  }
})

renderer.renderToString(url)
  .then(html => {})
  .catch(err => {})复制代码

当然文档文件和 server 也是可以部署在一起的,basePath 不是一个 URL 的话就会当做文件路径处理,也就是从服务器上加载资源。

最后最后


纪念下这特殊的版本 ?,一晚上实现外加一白天修 bug,还特么是在生日的时候。SSR 都支持了,编译静态文件也不远了,嗯。

如果你觉得 docsify 对你有帮助,或者想对我微小的工作一点资瓷,欢迎给我捐赠

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值