前段时间同事需要写一个文档,而且需要登录,他原来是选择用docsify,但是他只会写文档运行,不知道怎么实现登录才能查看文档的功能,然后就找上了我。我看了一下框架支持ssr,那么应该也可以实现密码验证,但是试了一下并没有实现(惭愧),那索性自己写一个吧。
我这边写了一个现成的脚手架,直接初始化项目就可以开始写md文档了
github项目代码:yinyangshibolange/serve-mds: markdown md password ssr (github.com)
npm项目名称:ssr-md
构建思路
现在"市面上"的文档系统一般都是静态的,本来吗,文档写来就是给人看的,但是确实会遇到特殊的需求,比如说为了文档安全要验证身份才能登录之类的,那么单纯的静态文档就显得不安全了
- 搭建node服务器,由于是个小功能,直接引用node的http server
server = require("http").createServer()
- 监听request,根据请求url返回内容
server.on("request", function(req,res){
const url = request.url
})
内容包括登录页,md页,静态资源,验证接口
-
登录页很简单,只需要一个密码输入框,还有一个提交按钮,另外就是有一张图片和一个文档标题
-
md页根据md文件生成(md文件现在是放在服务器一起),使用marked转换为html,之后加载markdown主题和hightlight.js代码高亮主题, 之后根据转换成的html生成左侧导航栏(正则查找h1-h6)
-
密码从文本文件中读取,使用readline包逐行读取,之所以不写入config.js中,是考虑之后做一个管理员账号,对密码进行可视化管理,有兴趣的小伙伴可以自行尝试
-
文档结构为发散型,即各md文档用链接相互跳转,如果有多个文档,建议把首页设置为目录,链接到其他的各个文档,如下图所示
最后效果如下图: