Golang ECHOhtml模板處理【5】


Golang echo默認並不包含關於視圖模版的處理,只是提供了集成第三方模版引擎的接口。可以根據自己的需要選擇任何第三方模版引擎。

提示:開發的是接口服務,不展示html頁面跳過篇。

在echo中使用第三方模版引擎至少需要如下三個步驟:

  1. 實現echo.Renderer接口
  2. 注冊模版引擎
  3. 在控制器中渲染模版並返回html頁面

下面以go自帶的html/template模版引擎為例介紹如何使用模版引擎。

1.實現echo.Renderer接口

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)
}

2.注冊模版引擎

接下來,需要向echo實例注冊模版引擎

//初始化echo實例
e := echo.New()

//初始化模版引擎
t := &Template{
    //模版引擎支持提前編譯模版, 這里對views目錄下以html結尾的模版文件進行預編譯處理
    //預編譯處理的目的是為了優化后期渲染模版文件的速度
    templates: template.Must(template.ParseGlob("views/*.html")),
}

//向echo實例注冊模版引擎
e.Renderer = t

//初始化路由和控制器函數
e.GET("/hello", Hello)

3.在控制器中渲染模版並返回html頁面

完成模版引擎設置后,就可以在控制器函數中通過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!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM