好的,所以我开始使用基于NodeJS的SailsJS。我使用的模板引擎是EJS(默认值)。
我没有一个线索如何实现以下目标:
父视图名为" main":
<!DOCTYPE html>
<html>
<body>
<div id="someDiv"><%- subviewContent %></div>
</body>
</html>
子视图:
<% main(subviewContent = {
<p>I am inside someDiv of main parent view!</p>
}); %>
控制器应该渲染&#34;子视图&#34;,子视图调用main,最后我们有一个完整的html页面。它看起来如此逻辑和简单,但我无法在此找到任何东西。 有没有人有建议,还是应该切换模板引擎?
答案 0 :(得分:0)
您正在寻找layout templates或view partials。
如果您希望每个页面的layout templates(母版页)与特定路线生成的正文相同:
Sails布局是应用程序视图/文件夹中的特殊.ejs文件 可以用来“包装”或“夹心”其他视图。布局通常包含 前言(例如!DOCTYPE html ....)和 结论(。布局从未在没有视图的情况下使用 - 那会 就像为某人提供面包三明治一样。您的应用的布局支持 可以在config / views.js中配置或禁用,也可以 通过设置特殊本地来覆盖特定路由或操作 叫布局。默认情况下,Sails将使用。编译所有视图 布局位于views / layout.ejs。
如果您希望在多个视图中重复使用部分视图(部分视图),例如侧边栏或联系我们嵌入式表单,则可以使用view partial执行此操作。
Sails在其视图呈现代码中使用ejs-locals,因此在您的视图中可以执行以下操作:
<%- partial ('foo.ejs') %>
渲染部分位于/views/foo.ejs。您的所有本地人将自动发送到部分。 路径相对于视图,即加载部分。因此,如果您在/views/users/view.ejs上有用户视图并想要加载/views/partials/widget.ejs,那么您将使用:
<%- partial ('../../partials/widget.ejs') %>