在服务器端的JsRender中嵌套布局

时间:2016-03-28 10:03:12

标签: node.js jsrender

是否可以使用JsRender& amp;组织Node.JS中的视图和布局?表达如下图所示的渲染机制?

网页的每个部分都是单独的文件,在渲染过程中,您决定使用哪个...

Layout organizing with JsRender

1 个答案:

答案 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");