如何在SailsJS应用程序中使用多个布局?

anh*_*hnt 7 layout ejs sails.js

我Sails.js应用程序具有独立frontendadmin布局.我的视图引擎是ejs.

如何为前端和管理站点使用单独的布局?

我可以为每个动作使用特定布局吗?

bre*_*hin 3

来自Sails.js 文档

\n\n

至少在 EJS 中,您必须使用 _layoutFile,而不是使用布局 local 来指示您的自定义布局:

\n\n
res.view({\n  _layoutFile: \'relativePathToYourCustomLayoutFromTheTargetView.ejs\'\n});\n
Run Code Online (Sandbox Code Playgroud)\n\n

您想要使用的布局的路径应该相对于您正在渲染的视图来指定。因此,如果您在 UserController 的创建操作中渲染视图 (views/user/create.ejs),则自定义布局的相对路径可能是:../staticSiteLayout.ejs

\n\n
PROJECT FOLDER\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 views\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 staticSiteLayout.ejs\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 layout.ejs\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 user\n        \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 create.ejs\n
Run Code Online (Sandbox Code Playgroud)\n\n

更新:

\n\n

似乎文档与代码有点偏离,因此对于当前(v0.9.8)版本,要采取的方法如下:

\n\n
module.exports = { \n  index: function(req, res){\n    res.view({ layout: \'layoutadmin\' });\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

  • 谢谢@bredikhin,我们将在文档中更新它。你是完全正确的,你需要将本地“layout”变量设置为布局的字符串名称/路径。这在 v0.10 中也是一致的。 (3认同)