【问题标题】:How to include CSS files in Express.js views when not using a template engine?不使用模板引擎时如何在 Express.js 视图中包含 CSS 文件?
【发布时间】:2019-09-10 01:47:40
【问题描述】:

我正在尝试创建一个 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 我有

和其他样式表链接。

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

无法获取 /stylesheets/shared/constants.css

这似乎不是正确的逻辑。应该改变什么?

【问题讨论】:

标签: javascript html node.js express html-rendering


【解决方案1】:

简单示例对我有用:

app.use(express.static(__dirname + "/publlic"))
app.get('/', (req, res) => {
app.engine('html', cons.swig);
app.set('view engine', 'html');
res.render('index');
})

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

通过这种方法,我像你一样使用引擎。

【讨论】:

    【解决方案2】:

    简单示例:

    假设您的文件夹结构:

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

    您可以简单地将公用文件夹作为静态服务器:

    app.use(express.static(__dirname + "/public"))
    
    // In your html
    <link rel="stylesheet" href="/stylesheets/shared/constants.css">
    

    使用 express,最好使用 absolute 路径而不是 relative 路径。

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

    app.use('/static', express.static(__dirname + "/public"))
    
    // In your html
    <link rel="stylesheet" href="/static/stylesheets/shared/constants.css">
    

    【讨论】:

      猜你喜欢
      • 2021-04-12
      • 1970-01-01
      • 2017-02-17
      • 1970-01-01
      • 2011-08-14
      • 1970-01-01
      • 1970-01-01
      • 2022-07-12
      • 1970-01-01
      相关资源
      最近更新 更多