javascript - 不使用模板引擎时如何在 Express.js View 中包含 CSS 文件?

标签 javascript html node.js express html-rendering

我正在尝试创建一个 Express 应用程序。我的限制是我不能使用任何模板引擎来渲染 HTML。 (至少)有两个问题:

  1. 我预见的问题之一是如何根据需要向用户显示的内容来操纵数据。例如。我的数据库中有一个交易表,我需要显示所有这些交易的 HTML 表。我使用的传统方法是利用模板引擎,我可以在其中放置一个遍历记录的 for 循环。
  2. 当我调用特定路由时,我正在发送 HTML 文件,但它无法从其他文件夹获取 CSS 文件。

对于问题2。我尝试过:

 app.get('/transactions', (req, res) =>
    res.sendFile(path.join(__dirname+'/public/assets/html/transactions.html')))

然后在 transactions.html 中我有

<link rel="stylesheet" href="../stylesheets/shared/constants.css">
以及样式表的其他链接。

当页面显示时,它不会应用任何样式。当我在浏览器中检查源代码并单击constants.css 的链接时,它会显示以下消息:

Cannot GET /stylesheets/shared/constants.css

这似乎不是正确的逻辑。哪些事情应该改变?

最佳答案

简单的例子:

假设您的文件夹结构:

app.js
|   +-- public
|   |   +-- stylesheets
|   |   |   +-- shared
|   |   |   |   +-- constants.css
...

您可以简单地将公共(public)文件夹作为静态服务器,例如:

app.use(express.static(__dirname + "/public"))

// In your html
<link rel="stylesheet" href="/stylesheets/shared/constants.css">

对于express,最好使用绝对路径而不是相对路径。

或者为静态文件设置虚拟路径,例如:

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

// In your html
<link rel="stylesheet" href="/static/stylesheets/shared/constants.css">

关于javascript - 不使用模板引擎时如何在 Express.js View 中包含 CSS 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55767775/

相关文章:

javascript - 不要在 C3.js 圆环图上显示动画

javascript - 使用 map 和 forEach 重构对象

php - 在 html 中添加多行时表单的输出给我 Word "ARRAY"

php - 单击该行时将所选类添加到表行

node.js - 即使我使用nodemon,Docker也不会重新加载nodejs应用程序?

javascript - 没有 'let' 或 'var' 的 ES6 类中 undefined variable

javascript - 在不扩展组件的类中更新 React 中的变量

javascript - 如何在 JavaScript 中匹配多行字符串的开始/结束?

javascript - 当鼠标移动到覆盖元素的东西时不要触发 onmouseout

node.js - 使用 nodejs 推送通知