Golang Web 框架 Buffalo

761 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第7天,点击查看活动详情

Buffalo 框架作为 Golang Web 框架的新军,于16年末启动项目至今也有6年了。目前有了稳定的1.x版本,能够适用于web开发的绝大多数场景。但其不像 Gin 框架那样灵活,可以轻松的插入到不同模块中,需要使用 Buffalo 脚手架来初始化项目框架,目录结构较为固定。

官网:gobuffalo.io/

GitHub:github.com/gobuffalo/b…

安装

  1. 安装 buffalo 命令行工具

使用 go install 安装 buffalo 命令行工具(注:Golang版本需 ≥ 1.18),如果使用 install 不成功可以将 cli 的源码下载下来后,cd 到 cmd/buffalo 下使用 go install 来安装。

安装成功后,使用 buffalo version 能成功拿到当前命令行工具的版本信息,则说明 buffalo 命令行工具安装成功了。

go install github.com/gobuffalo/cli/cmd/buffalo@v0.18.10
  1. 安装 yarn

先在 node官网 中下载并安装node环境,然后使用 npm 全局安装 yarn

npm install -g yarn

快速上手

  1. 创建项目,使用 buffalo new 命令初始化项目,如下所示,初始化一个 coke 项目
buffalo new coke
  1. 启动项目,使用 buffalo dev 启动项目,如果项目启动的过程中提示 "[webpack-cli] Invalid configuration object" ,可以根据提示维护下 webpack、npm 的版本

控制器

buffalo 支持页面渲染响应,数据返回响应两种常见模式。通过在 actions/app.go 中定义路由地址与 Handler 的映射关系,来实现请求地址与控制器的绑定。

页面渲染

使用 c.Render() 方法指定返回的错误码及相关的数据类型,通过 render.Engine 对象中的 HTML 方法指定进行页面数据的渲染。html 的地址默认会指向 templates 目录,如下所示:会去 templates 目录下找 my.html 文件并进行渲染。

app.GET("/my", func(c buffalo.Context) error {
   return c.Render(http.StatusOK, r.HTML("my.html"))
})

返回JSON数据

与 “页面渲染” 的整体逻辑类似,只不过返回 JSON 数据时,需要使用 render.Engine 中的 JSON 方法。

app.GET("/json", func(c buffalo.Context) error {
   return c.Render(http.StatusOK, r.JSON(map[string]interface{}{
      "msg": "Success",
   }))
})