Copyright © 2022-2025 aizws.net · 网站版本: v1.2.6·内部版本: v1.25.2·
页面加载耗时 0.00 毫秒·物理内存 181.5MB ·虚拟内存 1439.6MB
欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
Go Echo框架默认并不包含关于 HTML 模板的处理,只是提供了集成第三方模版引擎的接口。我们可以根据自己的需要选择任何第三方模版引擎。
如果你开发的是 API 服务,无需提供 HTML 页面可以跳过本章内容。
在 Go Echo框架中使用第三方模版引擎至少需要如下三个步骤:
下面以 golang 自带的 html/template 模版引擎为例介绍如何使用模版引擎。
我们先看下 echo.Renderer 接口定义:
Renderer interface {
// 渲染函数定义
// 第一参数用于保存渲染模版后的结果
// 第二个参数是模版名字
// 第三个参数是传入模版的参数,可以是任意类型
// 第四个参数是echo.Context
Render(io.Writer, string, interface{}, Context) error
}
通过实现 echo.Renderer 接口自定义当调用 Render 函数的时候我们使用什么模版引擎来渲染模版。
// 自定义的模版引擎 struct
type Template struct {
templates *template.Template
}
// 实现接口,Render函数
func (t *Template) Render(w io.Writer, name string, data interface{}, c echo.Context) error {
// 调用模版引擎渲染模版
return t.templates.ExecuteTemplate(w, name, data)
}
我们需要向 echo 实例注册模版引擎。
//初始化echo实例
e := echo.New()
// 初始化模版引擎
t := &Template{
//模版引擎支持提前编译模版, 这里对views目录下以html结尾的模版文件进行预编译处理
//预编译处理的目的是为了优化后期渲染模版文件的速度
templates: template.Must(template.ParseGlob("views/*.html")),
}
// 向echo实例注册模版引擎
e.Renderer = t
// 初始化路由和控制器函数
e.GET("/hello", Hello)
完成模版引擎设置后,就可以在控制器函数中通过 echo.Context 对象的 Render 函数渲染模版并返回 html 页面。
函数定义:Render(code int, name string, data interface{}) error。
参数说明:
| 参数 | 说明 |
|---|---|
| code | http状态码 |
| name | 模版文件名 |
| data | 模版参数,可以是任意类型数据 |
模版文件 views/hello.html 内容:
Hello, {{.}}!
渲染模版文件:
func Hello(c echo.Context) error {
//渲染hello.html模版文件,模版参数为world
return c.Render(200, "hello.html", "World")
}
渲染结果为:Hello, world!
Go Echo框架通过 static 中间件的支持,来访问静态资源文件,比如:js、css、jpg 等类型的资源文件。1. echo.Static 函数定义:我们可以通过 echo.Static 函数初始化 static 中间件。2. Echo.File 函数定义:我们也可以通过 Echo.File 函数为一个url地址绑定一个静态资源文件。