[{"content":"问题：一篇 2000 字的中文文章，页面上显示 \u0026ldquo;1 min read\u0026rdquo;，明显不对。\n原因：Hugo 默认按空格切词，中文整段没有空格，会被当成 1 个\u0026quot;词\u0026quot;，于是字数统计和阅读时间全线失真。\n结论：配置里加一行就够了。\nhasCJKLanguage: true 加上之后字数按汉字计算，阅读时间按每分钟约 500 字估算，才算能用。\n顺带：如果摘要自动截取的中文断在词中间，可以在 front matter 里手写 summary，比调截取参数省事。\n","permalink":"https://my-blog-dni.pages.dev/notes/2026-10-29/","summary":"\u003cp\u003e\u003cstrong\u003e问题\u003c/strong\u003e：一篇 2000 字的中文文章，页面上显示 \u0026ldquo;1 min read\u0026rdquo;，明显不对。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e原因\u003c/strong\u003e：Hugo 默认按空格切词，中文整段没有空格，会被当成 1 个\u0026quot;词\u0026quot;，于是字数统计和阅读时间全线失真。\u003c/p\u003e","title":"Hugo 的中文阅读时间不准，原因是没开 CJK 分词"},{"content":"这篇既是示例文章，也是这个站的使用说明书。半年后忘了怎么发文章，回来翻它就行。\n整体结构 本地写 .md → git push → Cloudflare 检测到推送 → 自动跑 hugo 构建 → 产物推上全球 CDN → 几十秒后线上更新 几个关键点：\n仓库是私有的，源码、草稿、提交历史只有自己能看到 只有构建产物是公开的，访客拿到的是渲染好的 HTML 没有服务器、没有数据库、没有 SSL 证书要续期，因为这些 Cloudflare 全包了 目录约定 只有两个地方需要记住：\n路径 放什么 什么时候写 content/posts/ 成篇的技术梳理 想清楚一个问题时 content/notes/ 当天的碎片记录 每天，有就记 剩下的 layouts/（模板）、assets/（样式）都是配置好就不动的东西。\n发一篇新文章 # 长期文章（draft 默认 true，写完了改 false） hugo new content posts/redis-persistence.md # 每日笔记（今天日期自动做标题，默认直接发布） hugo new content notes/2026-10-29.md 本地预览：\nhugo server -D # 打开 http://localhost:1313 ，-D 表示连草稿一起预览 确认没问题就推上去：\ngit add . git commit -m \u0026#34;post: Redis 持久化机制\u0026#34; git push 等 Cloudflare 构建完成，线上就有了。整个流程里唯一需要动脑的部分是写内容本身。\nfront matter 怎么写 每篇文章开头这段 YAML 就是 front matter，决定它怎么被展示：\n--- title: \u0026#34;Redis 持久化机制\u0026#34; date: 2026-10-29 draft: false tags: [\u0026#34;redis\u0026#34;, \u0026#34;数据库\u0026#34;] # 技术栈级别的标签，会出现在 /tags/ 页面 categories: [\u0026#34;后端\u0026#34;] # 大类，一篇只给一个 summary: \u0026#34;RDB 和 AOF 的取舍，以及为什么生产环境通常两个都开。\u0026#34; ShowToc: true # 是否在右上角显示目录 --- 三个容易踩的点：\ndraft: true 的文章不会被构建，本地不加 -D 也看不到，容易以为「文章丢了」 文件名统一用英文短横线格式（redis-persistence.md），中文文件名会让 URL 变成 %E4%B8%AD 这种乱码 summary 值得手动写，它同时用于列表页摘要和分享出去的卡片描述 代码块 技术笔记里最常用的东西，支持文件名标注和指定行高亮：\n```go {hl_lines=[3]} func main() { fmt.Println(\u0026#34;第 3 行会被高亮\u0026#34;) } ``` 下一步想加的东西 标签和分类 站内搜索 每日笔记归档 评论（配好 Giscus 后把 README 里那步删掉） 给文章加封面图 这份清单本身也可以当模板用——每完成一项就打勾，比空想着\u0026quot;以后要做\u0026quot;有用得多。\n","permalink":"https://my-blog-dni.pages.dev/posts/hello-blog/","summary":"私有仓库存源码，Cloudflare Pages 出网站。写完这一篇，我也终于不用再翻教程了。","title":"这个博客是怎么搭起来的"},{"content":"现象：Cloudflare 构建成功，打开网站是纯文本，CSS 和图片全部 404。\n排查：构建日志没有任何错误，说明不是构建问题，是路径问题。\n原因：baseURL 写成了 https://xxx.pages.dev，少一个结尾斜杠。Hugo 生成相对路径时会拼成 https://xxx.pages.devassets/css/...，自然找不到。\n结论：\nbaseURL: \u0026#34;https://xxx.pages.dev/\u0026#34; # 结尾必须有 / 记住这个规律：构建成功但样式全丢 → 先看 baseURL；构建失败报模板错误 → 先看 Hugo 版本。\n","permalink":"https://my-blog-dni.pages.dev/notes/2026-10-28/","summary":"\u003cp\u003e\u003cstrong\u003e现象\u003c/strong\u003e：Cloudflare 构建成功，打开网站是纯文本，CSS 和图片全部 404。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e排查\u003c/strong\u003e：构建日志没有任何错误，说明不是构建问题，是路径问题。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e原因\u003c/strong\u003e：\u003ccode\u003ebaseURL\u003c/code\u003e 写成了 \u003ccode\u003ehttps://xxx.pages.dev\u003c/code\u003e，少一个结尾斜杠。Hugo 生成相对路径时会拼成 \u003ccode\u003ehttps://xxx.pages.devassets/css/...\u003c/code\u003e，自然找不到。\u003c/p\u003e","title":"baseURL 少了结尾的斜杠，整站样式全丢"},{"content":"这篇不是语法大全，只收录技术笔记里高频使用的那几种，并且都是这个主题下的实际效果。\n行内样式 行内代码、加粗、斜体、删除线、链接。\n快捷键写 \u0026lt;kbd\u0026gt;Ctrl\u0026lt;/kbd\u0026gt; + \u0026lt;kbd\u0026gt;C\u0026lt;/kbd\u0026gt; 会渲染成 Ctrl + C。\n列表 无序：\n第一层 第二层 第三层（再深就不建议了，读者会晕） 有序，适合写步骤：\n先确认 hugo version 大于 0.158 再执行 hugo server 最后 git push 任务清单：\n搭好框架 配好搜索 写满十篇 表格 列多的时候记得对齐，否则源文件很难维护：\n命令 作用 常用参数 hugo 构建到 public/ --gc --minify hugo server 本地预览 -D 含草稿 hugo new 新建内容 --kind note 代码块 带语言标注就会高亮：\ndef fib(n: int) -\u0026gt; int: a, b = 0, 1 for _ in range(n): a, b = b, a + b return a 不加语言标注时，Hugo 会根据内容猜（guessSyntax 已开启）：\ngit commit -m \u0026#34;fix: 修复登录态丢失\u0026#34; 指定要高亮的行（hl_lines）：\nconst cache = new Map(); cache.set(\u0026#34;key\u0026#34;, heavyCompute()); // 这一行会被标出来 引用 引用块适合放原文摘录、官方文档的说法，或者一句需要强调的结论。\n也可以用来区分「我的理解」和「文档原话」。\n折叠块 内容长的补充说明可以折起来，避免打断阅读节奏：\n点开看完整报错 Error: failed to load module \u0026#34;papermod\u0026#34; caused by: module not found 这类报错通常是主题目录名和 theme: 配置不一致导致的。\n图片 图片放在 static/images/ 下，正文用绝对路径引用：\n![架构图](/images/architecture.png) 不要用本地绝对路径（如 C:\\Users\\...），构建到云端会全部失效。\n分隔线与脚注 三个短横线是分隔线：\n这是一句带脚注的话1。\n写完之后 扫一眼这几点，能省掉 90% 的返工：\n标题层级从 ## 开始，# 留给文章标题（主题会自动渲染） 代码块都标了语言 长文加了 ShowToc: true draft 改成了 false 脚注内容会渲染在文末，适合放参考链接。\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"https://my-blog-dni.pages.dev/posts/markdown-cheatsheet/","summary":"把自己最常用的十来种写法固化成一篇，写文章时直接复制，不用查语法。","title":"Markdown 写法速查（本主题实际渲染效果）"},{"content":"我是谁 写一句就行，比如：后端开发，主要写 Go 和一点 Rust，最近在啃数据库原理。\n这段文字的作用不是自我介绍，而是让偶然点进来的人（包括半年后的你） 三秒钟内知道这个站会不会有他想要的东西。\n这个站在记什么 栏目 内容 更新频率 文章 某个技术点的完整梳理 想清楚一件事就写一篇 每日笔记 当天踩的坑、读的代码 有就记，没有不硬凑 联系我 GitHub：yourname 邮箱：you@example.com 想交流直接去文章下面的评论区，或者提 Issue。\n","permalink":"https://my-blog-dni.pages.dev/about/","summary":"about","title":"关于"}]