第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

根據(jù)主模板實際需要動態(tài)解析子模板

根據(jù)主模板實際需要動態(tài)解析子模板

Go
滄海一幻覺 2022-12-19 10:35:44
假設(shè)我有大量的模板和子模板,那么我如何根據(jù)管道中需要的那些來解析子模板呢?template我的想法是讀取當前要渲染的模板并找出它使用了哪些模板,但我不知道該怎么做,也許用正則表達式?PS:答案不必考慮子模板的多層嵌套。例子package mainimport (    "html/template"    "path/filepath")func CollectFiles(dir string, excludeList []string) (fileList []string, err error) {    // ...    return}func main() {    filePathList, _ := CollectFiles("dir/src", []string{".md"})    for _, curFile := range filePathList {        _, _ = template.New(filepath.Base(curFile)).            ParseFiles(curFile, "tmplA", "tmplB", "...", "tmplN")    }}假設(shè)主模板只需要 tmplA和tmplB作為子模板。我怎樣才能檢測到它只需要這兩個?我不想每次添加或調(diào)整新模板時都更改程序。
查看完整描述

1 回答

?
Smart貓小萌

TA貢獻1911條經(jīng)驗 獲得超7個贊

您可以通過這種方式找到模板中的所有關(guān)鍵字。

regexp.MustCompile(`{{-? ?(template|partial) \"([^() ]*)\" ?.* ?-?}}`)

正則表達式101

當您遇到更復(fù)雜的情況時,哪里partial只是您使用的示例。您可以刪除它或自行添加更多關(guān)鍵字。

go-playground


其他部分,比如CollectFiles我認為不是那么重要,如果有人需要參考下面


然后只需要過濾模板,找出當前文件使用的模板。


最后,無論何時添加模板,代碼都不會更新。(除非您想更新站點上下文)


我在Github上寫了一個可以運行的簡單例子,這樣人們就可以知道我想做什么。

子模板的嵌套。

如果你想處理這個。嘗試使用這個功能

現(xiàn)在這將起作用

如果渲染:index.gohtml不僅base.gohtml包含而且還包含 { head.gohtmlnavbar.gohtmlfooter.gohtml}

<!-- index.gohtml --> 

{{- template "base.gohtml" . -}} <!-- ?? --> 

{{define "head"}}

  <style>h2 {background-color: yellow;}

  </style>

{{end}}

{{define "body"}}

<h2>Welcome to XXX</h2>

{{end}}

在哪里base.gohtml


{{template "head.gohtml" . -}}

{{template "navbar.gohtml"}}

{{- block "body" . -}}

{{- end -}}

{{template "footer.gohtml"}}


查看完整回答
反對 回復(fù) 2022-12-19
  • 1 回答
  • 0 關(guān)注
  • 88 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號