答案 0 :(得分:2)
是的 - 你看过了吗?
此处的示例:https://github.com/BorisMoore/jsrender-node-starter显示服务器和浏览器中的嵌套布局。例如,这一行
https://github.com/BorisMoore/jsrender-node-starter/blob/master/templates/layout-movies.html#L34正在布局电影模板中进行服务器模板合成:{{include tmpl='./templates/movie-list.html'/}}
。
您还可以根据(服务器)渲染时数据或上下文执行动态合成 - 因为您可以将tmpl=...
设置为任何表达式。例如:
{{include tmpl=type==='a' ? '.../a.html': '.../default.html'/}}
或
{{include tmpl=~getTmpl(type)/}}
其中~getTmpl()
是一个帮助器,您可以这样定义:
jsrender.views.helpers("getTmpl", function(type) {
switch (type) {
case "major":
return "./templates/major.html";
}
return "./templates/base.html";
});
如果需要,您可以让~getTmpl()
返回实际编译的模板,而不是文件路径到模板,例如通过编写
return jsrender.templates("./templates/major.html");