buffalo generate 命令不单独生成模板文件,仅在生成 resource 或非 api action 时按约定连带创建 templates/ 下对应目录及 .html 文件,路径和命名严格固定且不可自定义。

buffalo generate 命令本身不单独生成“模板文件”,它只在生成资源(resource)、动作(action)或迁移(migration)时,按约定**连带创建模板目录和基础 .html 文件**。想拿到模板,必须触发对应 scaffold 流程,不能跳过上下文。
执行 buffalo generate resource 会自动建模板
这是最常用、也最符合 Buffalo 约定的方式。例如:
buffalo generate resource posts title:string body:text
该命令会在 templates/posts/ 下生成全套 CRUD 模板:
-
index.html→ 对应List动作 -
show.html→ 对应Show动作 -
new.html和edit.html→ 分别对应Create和Update的表单页 -
_form.html→ 复用的表单片段(含隐藏字段、CSRF)
所有模板默认使用 plush 语法,且已预置 等常见结构。你不需要手动 mkdir 或 touch 文件。
buffalo generate action 也能生成模板(但有前提)
它只在生成「非 API 类型」的动作时才建模板。例如:
buffalo generate action users#new
会生成 actions/users.go 中的 New 方法,并在 templates/users/new.html 创建空模板。
Buffalo框架 1.0.1 版本源码包下载,适合需要错误处理改进、依赖更新、render.Download 注释和 request logger 调整的 v1 项目。
但如果你加了 --api 标志:
buffalo generate action --api api/v1 users#list
就不会生成任何模板——只建 handler 函数和路由注册,适合纯 JSON 接口场景。
模板路径和命名是硬编码的,不能自定义
Buffalo 不支持通过命令行参数指定模板存放目录(比如 --template-dir views/),所有模板都严格遵循:templates/<resource_name>/<action_name>.html</action_name></resource_name>。
常见误解和坑:
- 执行
buffalo generate resource users后,templates/users/不存在?→ 检查是否漏掉buffalo dev启动前的go mod tidy,有时依赖未拉取会导致模板目录生成失败 - 修改了
templates/users/show.html,但页面没变?→ 确认GO_ENV=development且未启用packr2打包(开发模式下模板是实时读取的,不是从 box 加载) - 想用
.gohtml或jet替换plush?→buffalo generate固定输出.html,后续需手动改后缀 + 调整render调用,框架不自动适配
真正要小心的是:模板文件名和路径由动作方法名决定,比如 Show 方法强制匹配 show.html,改名不改方法会导致 404;而 buffalo generate 从不校验你是否已存在同名模板——它只跳过已存在文件,不会覆盖,所以手写错名的模板容易被静默忽略。










