html/template多layout,不能自动渲染的问题!

mia0x75 · · 1044 次点击
我的目录结构也是这样啊………… 你的问题是go的模板引擎必须指定每一个使用到的模板文件么? 拿换个模板引擎,比如jet就行乐啊…… 还是想自动生成相应的views数组?
#11
更多评论
polaris
社区,需要你我一同完善!
每个页面负责传递自己对应的 view 部分 html 文件,用于第二个参数吧
#1
t.ExecuteTemplate(w, "single", nil) 第二个参数使用当前页面的相对路径,且包含子目录,对上面的代码好像是可以,但是不能获取从代码传过来的数据。 改造: index.html ``` {{ template "default" }} {{ define "content" }} <div>默认页面</div> <div>{{ . }} </div> {{ end }} ``` login.html ``` {{ template "single" }} {{ define "content" }} <div>登录页面</div> <div>{{ . }} </div> {{ end }} ``` 简化partials部分的index ``` func home(w http.ResponseWriter, r *http.Request) { t, err := template.ParseFiles("templates/views/index.html", "templates/layouts/single.html", "templates/layouts/default.html") if err != nil { fmt.Println(err) } t.ExecuteTemplate(w, "default", &map[string]interface{}{ "key1": "value1", }) } ``` 第二个参数是default,浏览器显示 ``` 默认页面 map[key1:value1] ``` 第二个参数是index或者index.html,浏览器显示 ``` 默认页面 ```
#2