用Golang搭轻量博客只需静态路由、模板渲染、文件读写三件事:以posts/目录下.md或.txt文件为“数据库”,用net/http和html/template实现列表页、详情页与编辑页,支持Markdown解析与单二进制部署。

用Golang搭个轻量博客,核心就三件事
不需要框架、不依赖数据库也能跑起来——Golang写博客的关键是:静态路由 + 模板渲染 + 文件读写。你只要会 net/http 和 html/template,就能把文章列表、详情页、编辑入口全串起来。
结构设计:用文件当“数据库”最省事
把每篇文章存成一个 .md 或 .txt 文件,放在 posts/ 目录下,文件名就是 slug(比如 hello-world.txt),内容开头用简单元信息:
Title: Hello World Date: 2024-05-20 --- 这是我的第一篇博客……
启动时扫描目录,解析文件头,生成文章列表;访问 /post/hello-world 就读对应文件、拆出正文和元数据,再套模板输出 HTML。
路由与模板:几行代码搞定前后端分离感
不用 RESTful 复杂规则,手写几个 http.HandleFunc 就够用:
立即学习“go语言免费学习笔记(深入)”;
-
/→ 列表页(用template.ParseGlob加载index.html) -
/post/{slug}→ 单文页(用http.ServeMux或简单字符串匹配) -
/edit→ 简单表单页(带 title/content 字段,POST 提交后写入文件)
模板里用 {{.Title}}、{{.Content | safeHTML}} 渲染,搭配 template.FuncMap 加个 markdown 函数(调用 blackfriday 或 goldmark),就能支持 Markdown。
本地运行 & 后续扩展很自然
编译成单二进制:go build -o blog .,直接 ./blog 就启动服务。想加搜索?加个内存索引(map[string][]string)扫一遍文件就行。想加密码编辑?在 /edit 处理前加个 if r.Header.Get("Authorization") != "Basic xxx" { http.Redirect(...) }。不复杂但容易忽略。










