gpt4 book ai didi

node.js - 如何在借用layout.ejs 文件的ejs 中包含单独的CSS 文件?

转载 作者:太空宇宙 更新时间:2023-11-04 01:32:24 27 4
gpt4 key购买 nike

我有一个layout.ejs 文件,它提供了我的 Node 应用程序的每个页面的基本布局。这包括一些基本的 CSS 文件(即 bootstrap)。我还有其他 ejs 文件,它们的正文是使用该 layout.ejs 文件呈现的,但我也希望它们能够包含自己的 CSS 文件以实现某些自定义样式。

我尝试将 CSS 直接包含在其他 ejs 文件中,但这只是将 css 文件设置在 html 正文中。我曾考虑过使用一个 javascript 文件在客户端注入(inject) CSS 文件,但这对我来说太“hacky”了。

目前,我的测试布局(继承自layout.ejs的布局)基本上如下所示:

<head>
<link href="../public/styles/index.css" rel="stylesheet" type="text\css">
</head>
<section id="box-section" class="blox-mf route">
<div class="container">
<div class="row">
<div class="col-sm-12">
<div class="title-box text-center">
<h3 class="title-a">
Title2
</h3>
<p class="subtitle-a" style="color: #be3131;">
Subtitle 2
</p>
<div class="line-mf"></div>
</div>
</div>
</div>
</div>
</section>

<script src="/scripts/index.js" crossorigin="anonymous"></script>

正如我所说,我所拥有的只是附加到 html 正文而不是 header 中的 css,因此所有内容都保持默认样式作为 layout.ejs 文件。有没有一种方法可以通过找到一种方法来获取不同的路线来使用基本布局 css 文件,但允许使用自己的 css 进行一些变化来实现此目的?

最佳答案

我找到了一种方法来做到这一点。所需要做的就是将一个变量传递到模板 ejs 中,该变量是 css 文件的 URI 数组。然后,ejs 循环遍历该数组并使用所需的 css 文件创建模板。

以下是传递 css 文件的代码:

myCss.push({
uri: 'public/styles/index.css'
})
res.render('./home', {
styles: myCss,
});

然后在模板上,您所要做的就是:

<% for(var i=0; i < styles.length; i++) { %>
<link href="<%= styles[i].uri %>" rel="stylesheet" type="text/css">
<% } %>

现在您可以传递路线所需的所有表格。需要进行一些代码重构来取代手动添加链接,但您可以了解其本质。

编辑:这需要一些设置来提供静态文件。您可以通过将其包含在您的快速申请中来做到这一点:

app.use(express.static(__dirname + '/public'));

关于node.js - 如何在借用layout.ejs 文件的ejs 中包含单独的CSS 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55680917/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com