我的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 %>
“contents”是包含要加载的正文相对路径的局部变量。
但不幸的是,似乎EJS总是按照字面意义解释 include
指令后面的文本,没有任何插值魔法的机会。
我也试过了,但没有成功:
<% function yieldContent(contents){ %>
<% var contentPath = 'contents/' + contents; %>
<% include contentPath %>
<% }; %>
<% loadContent(); %>
有没有人有创造性的解决方案,可以根据在路由中传递的变量来有条件地包含一个视图?