1. 程式人生 > >Go語言中使用模板引擎

Go語言中使用模板引擎

文章目錄

1 概述

處理響應主體時,最常見的方式就是傳送處理好的 HTML 程式碼,由於需要將資料嵌入到 HTML 中,那麼模板引擎(template engine)就是最好的選擇。

Go語言中,提供了 html/template 包,實現模板引擎的相關功能。快速使用示例:

main.go

package main

import (
  "html/template"
  "log"
  "net/http"
)

func main
() { // 設定 處理函式 http.HandleFunc("/", TestAction) //// 開啟監聽(監聽瀏覽器請求) log.Fatal(http.ListenAndServe(":8084", nil)) } func TestAction(w http.ResponseWriter, r *http.Request) { // 解析模板 t, _ := template.ParseFiles("template/index.html") // 設定模板資料 data := map[string]interface{}{ "User": "小韓說課", "List"
: []string{"Go", "Python", "PHP", "JavaScript"}, } // 渲染模板,傳送響應 t.Execute(w, data) }

template/index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>小韓說課</title>
</head>
<body>

Hello, {{ .User }}
<br>
你熟悉的技術: <ul> {{ range .List }} <li>{{.}}</li> {{end}} </ul> </body> </html>

執行結果:

執行結果

以上程式碼就完了模板引擎的基本使用,包括解析模板,渲染資料,響應結果操作。接下來詳細說明。

2 解析模板

函式 template.ParseFiles(filenames ...string) (*Template, error) 可以解析模板檔案,並得到模板物件。引數為模板檔案。同時會以模板檔案的檔名(不包含字尾名)作為模板的名字。

還可以使用 template.New("name").Parse(src string) 來建立模板物件,並完成解析模板內容。

3 應用資料併發送響應

函式 func (t *Template) Execute(wr io.Writer, data interface{}) error 將 data 應用到解析好的模板上,並將輸出寫入 wr。如果執行時出現錯誤,會停止執行,但有可能已經寫入wr部分資料。

data 資料可以接受任意型別,最常見的型別為:map[string]interface{},通過不同的下標來區分部分的分配資料。在模板中使用 .User.List 來訪問分配資料中的 User 和 List。

完!
原文出自:小韓說課
微信關注:小韓說課
小韓說課