Buffalo框架通过约定减少配置,自动绑定路由、模板和静态资源,简化数据库迁移。路由按控制器方法名(List/Show等)自动注册;模板路径固定为templates/{resource}/index.plush.html;静态资源自动编译托管;模型需单数大驼峰命名,迁移文件时间戳不可修改。

Buffalo框架通过强制约定减少配置项,让开发者聚焦业务逻辑而非框架胶水代码,新项目初始化后无需修改路由、模板、静态资源路径等基础配置即可直接运行。
路由自动绑定
创建控制器文件 actions/users.go 后,框架自动注册 GET /users 对应 UsersResource.List 方法,无需在 app.go 中手动调用 app.GET("/users", UsersResource.List)。
控制器方法名必须严格为 List、Show、Create、Update、Destroy 之一,否则路由无法识别——【方法名拼写错误将导致404且无提示】。
这一步操作起来很简单,直接把文件放进 actions/ 目录就行。
模板路径与渲染规则
方法 UsersResource.List 执行后,Buffalo 自动查找并渲染 templates/users/index.plush.html。
如果模板文件不存在,框架不会报错,而是返回空响应;若存在但语法错误,错误堆栈会指向 plush 解析器而非你的 Go 代码行——调试时容易误判位置。
Buffalo框架 1.0.1 版本源码包下载,适合需要错误处理改进、依赖更新、render.Download 注释和 request logger 调整的 v1 项目。
模板中可通过 .Data 访问传入的上下文数据,无需额外声明或转换。
静态资源自动托管
所有放在 assets/css/、assets/js/、assets/images/ 下的文件,在开发模式下由 Buffalo 自动编译、哈希、注入 HTML,并托管在 /assets/ 路径下。
生产构建时,buffalo build 会将这些资源输出到 public/assets/ 并生成 manifest.json,但你完全不用手动配置 Web 服务器去服务该目录——Buffalo 内置的 HTTP 服务已默认启用静态文件中间件。
数据库模型与迁移约定
第一步:在 models/ 下新建 user.go,结构体名必须为单数大驼峰(如 User),字段名首字母大写且使用 db: tag 声明列名。
第二步:执行 buffalo db generate model user name:string email:string,命令自动生成带时间戳的迁移文件、模型定义、以及 models/user_test.go 模板。
第三步:运行 buffalo db migrate,框架读取 database.yml 中的 development 配置并执行迁移——【migration 文件名中的时间戳不可手动修改,否则顺序错乱将导致数据库状态不一致】。

















