表达js并为视图提供静态文件

时间:2018-02-27 13:56:06

标签: node.js express model-view-controller assets ejs

我的项目中有几个视图让我们说:“view1”,“view2”,“view3”。 查看引擎是“ejs”。对于那些视图,我有不同的脚本/ css文件。我也有部分:header.ejs和footer.ejs,我包括在视图(标题)和底部(页脚)的顶部:

enter image description here

如图所示,view1.ejs使用两个样式表(styleA,styleB)和脚本(scriptA,scriptB)。

当我要使用那些静态文件的另一个视图时,一切都很好,因为我在视图中包含了header.ejs和footer.ejs。

但是因为我在另一个视图中使用不同的样式表和脚本,并且我不想包含“styleA”和“styleB”,所以我遇到了问题。我只想保留相同的部分页眉和页脚,但内部有其他链接。

是否有“资产经理”或其他解决方案来管理所有这些链接?

当我想在超过20页的时候使用header.ejs时,事情会变得复杂,因为如果没有解决我的问题,我需要包含所有链接/样式,其中一些不是必需的。

1 个答案:

答案 0 :(得分:2)

在express中,您可以将样式和脚本作为数组传递以呈现您的ejs模板:

app.get('/', function (req, res) {
  res.render('index', { styles: ['styleA.css', 'styleB.css'], scripts: ['scriptA.js', 'scriptB.js']});
});

现在更新您的ejs模板。首先是样式部分:

<% styles.forEach(function(sty){ %>
   <link href="<%- sty %>" rel="stylesheet">
<% });%>

然后,脚本部分:

<% scripts.forEach(function(scr){ %>
  <script src="<%- scr %>"></script>
<% });%>