【发布时间】:2012-08-02 00:45:32
【问题描述】:
我的 Express 应用正在使用 EJS,我的视图目录如下所示:
./views
./contents
home.ejs
./includes
header.ejs
footer.ejs
layout.ejs
我正在尝试根据我的 routes/index.js 中名为 contents 的局部变量有条件地在我的 layout.ejs 视图中加载 home.ejs。该文件如下所示:
/*
* GET home page.
*/
exports.index = function(req, res){
res.render('index', { title: 'Home', contents: 'home.ejs' });
};
理想情况下,我可以简单地编写(在 layout.ejs 中):
<% include '/contents' + contents %>
结尾的“内容”是包含要加载的正文的相对路径的局部变量。
但是,可惜的是,EJS 似乎总是按字面意思解释 include 指令之后的文本,并且不可能发生任何插值魔法。
我也试过了,没用:
<% function yieldContent(contents){ %>
<% var contentPath = 'contents/' + contents; %>
<% include contentPath %>
<% }; %>
<% loadContent(); %>
有没有人有创造性的解决方案来有条件地包含基于路由中传递的变量的视图?
【问题讨论】:
-
+1,如果不能动态包含有什么意义?我不知道如何使用它。
标签: node.js include express ejs