goweb 模板引擎

2022-05-15 05:29:12 字數 2031 閱讀 6554

go 為我們提供了 text/template 庫和 html/template 庫這兩個模板引擎,模板引

擎通過將資料和模板組合在一起生成最終的 html,而處理器負責呼叫模板引擎並將引

擎生成的 html 返回給客戶端。

go 的模板都是文字文件(其中 web 應用的模板通常都是 html),它們都嵌入了

一些稱為動作的指令。從模板引擎的角度來說,模板就是嵌入了動作的文字(這些文字

通常包含在模板檔案裡面),而模板引擎則通過分析並執行這些文本來生成出另外一些

文字。使用 go 的 web 模板引擎需要以下兩個步驟:

(1) 對文字格式的模板源進行語法分析,建立乙個經過語法分析的模板結構,其中

模板源既可以是乙個字串,也可以是模板檔案中包含的內容。

(2 )執行經過語法分析的模板,將 responsewriter 和模板所需的動態資料傳遞給模

板引擎,被呼叫的模板引擎會把經過語法分析的模板和傳入的資料結合起來,生成出最

終的 html,並將這些 html 傳遞給 responsewriter。

下面就讓我們寫乙個簡單的 helloworld

建立模板檔案 hello.html

//嵌入動作 }

在處理器中觸發模板引擎

func handler(w http.responsewriter, r *http.request)
瀏覽器中的結果

hello world!

parsefiles 函式

當我們呼叫 parsefiles 函式解析模板檔案時,go 會建立乙個新的模板,

並將給定的模板檔案的名字作為新模板的名字,如果該函式中傳入了多個

檔名,那麼也只會返回乙個模板,而且以第乙個檔案的檔名作為模板

的名字,至於其他檔案對應的模板則會被放到乙個 map 中。讓我們再來

看一下 helloworld 中的**:

t, _ := template.parsefiles("hello.html")

以上**相當於呼叫 new 函式建立乙個新模板,然後再呼叫 template 的

parsefiles 方法:

t := template.new("hello.html")

t, _ = t.parsefiles("hello.html")

我們在解析模板時都沒有對錯誤進行處理,go 提供了乙個 must 函式專

門用來處理這個錯誤。must 函式可以包裹起乙個函式,被包裹的函式會

返回乙個指向模板的指標和乙個錯誤,如果錯誤不是 nil,那麼 must 函式

將產生乙個 panic。

實驗 must 函式之後的**

t := template.must(template.parsefiles("hello.html"))

parseglob 函式

通過該函式可以通過指定乙個規則一次性傳入多個模板檔案,如:

t, _ := template.parseglob("*.html")

通過 execute 方法

如果只有乙個模板檔案,呼叫這個方法總是可行的;但是如果有多個模板

檔案,呼叫這個方法只能得到第乙個模板

通過 executetemplate 方法

例如:t, _ := template.parsefiles("hello.html", "hello2.html")

變數 t 就是乙個包含了兩個模板的模板集合,第乙個模板的名字是

hello.html,第二個模板的名字是 hello2.html,如果直接呼叫 execute 方法,

則只有模板 hello.html 會被執行,如何想要執行模板 hello2.html,則需要

呼叫 executetemplate 方法

t.executetemplate(w, "hello2.html", "我要在 hello2.html 中顯示")

go web開發第三講 模板引擎

模板引擎就是乙個可以再模板中使用變數的一套框架,可以方便我們進行html的巢狀,資料的傳輸。接下來我們講解如何在go開發中使用模板引擎。handleindex 通過呼叫tempate.must方法,我們可以對模板資料夾進行解析 然後呼叫tempalates.executetempate表示具體呼叫哪...

NVelocity模板引擎

因此決定自學一下nvelocity的使用 拋開monorail 安裝後,在其下的bin目錄中可找到nvelocity.dll net專案中將用到 並將其複製出來放到我的測試web bin目錄下。到castleproject上看了一下using it大致有四步 先要引入以下命名空間 using com...

twig模板引擎

twig是乙個靈活 高效並且安全的php模板引擎。如果你使用過smarty django或者jinja這類基於文字的模板引擎的話,那麼你會覺得twig是很自然而然的事情。twig嚴格遵守了php的信念,同時增加了在模板環境中很有用的函式,這些做法使得twig不論是對設計師還是開發人員,都是非常友好的...