Go 模板嵌套最佳实践

smallnest ·
但是上面的结果显示有一点点问题,就是footer渲染的时候并没有显示body的结果,这是因为data传给了主模版,嵌套模版如果要使用这个数据,需要在嵌套的地方把data传递给它。我们可以修改header.html: Title is {{.Title}} {{template "footer" <div class=""></div>}} 这个代码运行错误,golang在生成html的时候抛出异常,修改成这样就OK了: Title is {{.Title}} {{template "footer" . }} 即,在嵌套模板的适合,要将点“.”跟在模板后面,“.”是“this”的意思,表示模板接收到参数。 另外我不明白为什么template.html里面应用变量的时候,花括号都用了转移符,我这边测试的时候全程没有转义也通过了。
#2
更多评论
但是上面的结果显示有一点点问题,就是footer渲染的时候并没有显示body的结果,这是因为data传给了主模版,嵌套模版如果要使用这个数据,需要在嵌套的地方把data传递给它。我们可以修改header.html: Title is \{\{.Title\}\} \{\{template "footer" <div class=""></div>\}\} 这个代码运行错误,golang在生成html的时候抛出异常,修改成这样就OK了: Title is {{.Title}} {{template "footer" . }} 即,在嵌套模板的适合,要将点“.”跟在模板后面,“.”是“this”的意思,表示模板接收到参数。 另外我不明白为什么template.html里面应用变量的时候,花括号都用了转移符,我这边测试的时候全程没有转义也通过了。
#1