English简体中文

渲染管线

这里的「渲染管线」指 Cdocs 把 docs/ 源文变成可部署静态站点的构建链路。它由「生成器编译 + 三步后处理」组成,全部由 build.cmd / build.sh 一键串联。

#总览

flowchart LR
  SRC["docs/*.md + .Cdocs/{config,route,i18n,assets}"]
  EXE["Cdocs.exe<br/>(C++ 生成器)"]
  GEN["dist/ 骨架<br/>HTML · SEO · sitemap · robots · 搜索数据"]
  RSS[".Cdocs/tools/gen-rss.js"]
  PWA[".Cdocs/tools/gen-pwa.js"]
  OUT["最终 dist/<br/>+ rss.xml · feed.json · manifest · sw.js"]

  SRC --> EXE
  EXE -->|生成| GEN
  GEN --> RSS
  GEN --> PWA
  RSS -->|注入 link rel=alternate| OUT
  PWA -->|注入 manifest + sw.js| OUT

构建分四步(脚本里标为 [0/3][3/3]):

#[0/3] 编译生成器

仅当 Cdocs.exe 缺失或任一源文件比 exe 更新时才编译。关键约定:

#[1/3] 生成站点

Cdocs.exe 读取数据层,产出 dist/

#[2/3] 生成 RSS / JSON Feed

.Cdocs/tools/gen-rss.js(纯 Node,仅用内置模块)读取已生成的 HTML,产出 RSS 2.0 与 JSON Feed,并向各页 <head> 注入 <link rel="alternate">。标题 / 描述取自已 i18n 解析的 HTML,摘要取首段。

#[3/3] 生成 PWA

.Cdocs/tools/gen-pwa.js 拷贝 sw.js / icon.svg,写各语言 manifest.webmanifest,注入 <link rel="manifest">theme-color,并升级 Service Worker 缓存版本号(清掉旧缓存),实现「已访问页断网可看」。

#如何扩展构建产物

新增一步 = 在 .Cdocs/tools/ 加一个纯 Node 脚本(仅依赖内置模块),再在 build.cmd / build.shnode 调一下即可。例如版本切换、OG 分享图等,都走这条「生成后再处理」的链路,与 C++ 生成器解耦。

#常见问题

直接以 file:// 双击打开 dist/*.html,PWA、Service Worker、部分 fetch 会受限。请用 Cdocs serve 或任意静态服务器(如 python -m http.server)以 http:// 访问。
上线前务必把 config.json 的 url 改成真实域名,否则 canonical / sitemap / RSS 里的链接都指向占位地址 https://docsgen.example.com。
最后更新于 2026-08-02 20:10 · 约 4 分钟阅读(793 字)