模板 gview 与静态资源目录约定

结论:GoFrame 支持服务端渲染与静态资源服务:gview 是内置模板引擎({{.xx}} 取值、include 引入子模板),ghttp 默认开启静态文件服务;官方建议把模板与静态资源集中放 resource/ 目录下,必要时用 gres 打进二进制单文件发布。

一、目录约定

  • 工程模板中常见:resource/template(视图模板)、resource/public(静态资源),实际路径由 Server 配置决定,可用 SetServerRoot/SetViewPath 调整(方法名以官方 API 为准)。
  • 静态资源由 Server 自动服务,无需每个文件写路由。
  • gres 资源打包:把模板/静态文件打包进二进制,部署只发一个可执行文件(配合 internal/packed 使用)。

代码示例

// 处理器中渲染模板
func Index(r *ghttp.Request) {
    r.Response.WriteTpl("index.html", g.Map{
        "title": "GoFrame 官网示例",
        "list":  g.Slice{"Go", "Frame", "v2"},
    })
}

// 启动前配置资源目录(示意)
s := g.Server()
s.SetServerRoot("resource/public") // 静态资源根
s.SetViewPath("resource/template") // 模板目录

模板文件 index.html:

<html><body>
<h1>{{.title}}</h1>
{{range .list}}<p>{{.}}</p>{{end}}
</body></html>

常见追问 / 记忆点

  • 追问:模板取值语法与 html/template 一样吗?→ 风格类似({{.xx}}),并内置 include 等便捷能力,具体语法以 gview 官方文档为准。
  • 追问:前后端分离还需要 gview 吗?→ 纯 API 项目用不到,模板场景主要在服务端渲染页/后台系统/邮件模板。
  • 记忆点:模板进 template、静态进 public、打包交给 gres——“一个目录约定 + 一个打包工具”。
笔记加载中…