v-no 是一个为 Markdown 准备的轻量级静态网站渲染 / 生成器,也是一个由 Vue.js 驱动的纯静态单页面应用。它主要通过识别 URL 的 Hash 部分记录的路径,异步请求 Markdown 文件对页面进行渲染。你可以只把它当作一个 Markdown 渲染器使用,也可以用它的子项目 v-no-script 生成预渲染 HTML 文件,或者启动一个支持热重载的 Web 服务。
演示及中文文档:https://akrisrn.github.io/v-no-doc/?conf=zh
- 可切换的多配置组(以及借此实现的 l10n 和 i18n)。
- 可嵌入的文件片段和模板(支持传递参数和切分文件)。
- 可执行的行内脚本(执行结果会作为 Markdown 的一部分被渲染,支持
await
异步函数)。 - 动态引入的自定义脚本和样式(可选择暂留或者常驻)。
- 大量服务行内 / 自定义脚本的 API(200+,不过还不太稳定)。
- Markdown 文件之间的双向链接(可视化网状链接关系图)。
- 扩展了部分 Markdown 语法(自动填充链接文本、在图像链接中追加样式、折叠标题等)。
- 额外增加了多个标记语法(文件元数据、可嵌套标签、自动生成列表、重定向页面等)。
- 两种模式的站内搜索(关键词或元数据)。
- 暗色 / 禅模式。
- 希望 Markdown 拥有对页面内容的可编程能力。
- 希望细化 Markdown 文件的粒度,建立起它们之间的关联、增加复用。
- 希望定制主题、更换布局(很遗憾你只能做一些样式上的调整)。
- ...
- v-no-script:一些需要在 Node.js 环境下执行的脚本位于这个仓库,它包含:
- 预渲染页面的脚本(使用 Puppeteer,有同步队列和递归并发两种选择)。
- 启动支持热重载的 Web 服务(express)的脚本(它会自动植入一个 WebSocket 客户端)。
- 根据
git log
更新 Markdown 文件元数据的脚本。 - 计算文件摘要,更新缓存键的脚本。
- v-no-doc:文档仓库。
- v-no-doc-script:文档使用的自定义脚本仓库。
- v-no-page-component:可以作为自定义脚本引入的 Vue 单文件组件仓库,它包含:
- 在页面中执行行内脚本的控制台。
- 即时渲染 Markdown 的沙盒。
- Markdown 文件之间的网状链接关系图。
- 项目模板:
- v-no-template:使用默认环境变量进行编译的网站模板,开箱即用,能满足通常的部署需求。
- v-no-hash-template:为避免预渲染冲突而准备的网站模板。
- v-no-script-template:用于搭建自定义脚本仓库的脚手架,使用 Webpack 打包,配置有:
vue-loader
ts-loader
babel-loader
sass-loader
安装依赖:
yarn install
启动热部署开发环境:
yarn run serve
构建生产版本代码:
yarn run build
# 使用现代模式进行构建
yarn run build-modern
单元测试:
yarn run serve
yarn run test:install-browser
yarn run test:unit