buffalo 纯 api 项目需手动精简:删 templates/、assets/、node_modules/;注释 cookies.secure()、csrf.new()、sessions.sessions();统一改用 c.json();移除 plush import;删除 app.servefiles()。

Buffalo 默认安装会拉取整套前端工具链,但纯 API 项目根本用不上;跳过它们不是靠参数开关,而是靠手动删+禁用组合操作。
删掉 templates/、assets/ 和 node_modules/ 目录
Buffalo 的 buffalo new 命令默认生成含前端构建能力的项目结构。这些目录对纯 API 完全冗余:
-
templates/:存放 HTML 模板,API 不需要渲染页面,直接rm -rf templates/ -
assets/:含 JS/CSS 源码和webpack.config.js,API 不提供静态资源,一并删除 -
node_modules/:前端依赖包,体积大且启动时不会被 Go 加载,删掉可省下 200MB+ 空间
注释或移除面向浏览器的中间件
Buffalo 默认启用的中间件很多是为 Session、CSRF、Cookie 安全设计的,API 场景下不仅无用,还可能引发 403 或空响应:
PigX UI Pro 前端开发指南 - Vue 3 + TypeScript + Element Plus。当用户提到 PigX UI、PigX 前端、lgb-mgui 项目、Vue 3 企业级后台开发、Element Plus 后台开发时使用此技能。
- 在
app.go中找到app.Use(cookies.Secure()),注释掉 - 找到
app.Use(csrf.New()),同样注释掉(否则 POST/PUT 请求会因缺少_csrf头失败) - 检查是否有
app.Use(sessions.Sessions(...)),API 通常用 JWT,也建议关掉
确保只用 JSON 输出,禁用 HTML 渲染路径
Buffalo 的 c.Render() 默认尝试走模板引擎,一旦 templates/ 被删就会 panic。必须统一改用 c.JSON():
- 所有 handler 中避免调用
c.Render(200, r.HTML(...))或任何带r.HTML的构造 - 替换为
c.JSON(200, map[string]interface{}{"data": "ok"})或app.JSON(200, ...) - 检查
actions/render.go是否还 importgithub.com/gobuffalo/plush,如果没用,删掉该 import 行
验证精简后是否真轻量
做完以上操作后,运行 buffalo dev 启动速度应明显快于默认项目,内存占用接近 net/http 手写服务。关键验证点:
- 访问
/返回 404 而非 HTML 页面 —— 说明app.ServeFiles()和根路由模板已失效 - 发起一个
curl -X POST http://localhost:3000/api/users,不带 Cookie 或 CSRF 头也能成功 —— 说明中间件已真正绕过 -
go build -o api .编译出的二进制不含前端相关符号,ldd api不显示 Node.js 或 V8 相关依赖
最容易被忽略的是 app.ServeFiles() 这行——它常藏在 app.go 底部,看似 harmless,实则会把 public/ 当静态根暴露,且隐式依赖 assets/ 构建产物。删之前务必 grep 一遍。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










