express:如何使用 sendFile 将 html 和 css 一起发送?

Posted

技术标签:

【中文标题】express:如何使用 sendFile 将 html 和 css 一起发送?【英文标题】:express: how to send html together with css using sendFile? 【发布时间】:2016-12-09 23:31:46 【问题描述】:

var app = require('express')();

app.get('/', function(req, res) 
  res.sendFile(__dirname + "/" + "index.html");
);
<link rel="stylesheet" href="style.css">

我使用上面的 node.js 代码来发送一个 html 文件。要格式化 html 文件,我需要发送另一个 css 文件(style.css)。 我的问题是:如何使用 sendFile() 发送这两个文件(index.html 和 style.css)并将它们集成到客户端?

【问题讨论】:

【参考方案1】:

浏览器应自行加载style.css,因此您可以将其用作路由:

app.get('/style.css', function(req, res) 
  res.sendFile(__dirname + "/" + "style.css");
);

但是,当您添加更多文件时,这会很快变得非常麻烦。 Express 提供了一种内置方式来提供静态文件:

https://expressjs.com/en/starter/static-files.html

const express = require("express");
const app = express();
app.use(express.static(__dirname));

请记住,如果index.html 与您的服务器代码位于同一目录中,您也会将服务器代码作为静态文件提供,这是不可取的。

您应该将index.html、您的css、图像、脚本等移动到一个子目录,例如一个名为public 的子目录,然后使用:

app.use(express.static("public"));

如果您这样做,Express 将自动提供 index.html,您也可以删除您的 app.get("/"

【讨论】:

太棒了!顺便说一句,浏览器会因为以下代码而加载 style.css 吗? 是的,可能值得您研究一些 HTML 内容以直接跳转到节点内容。 @Explosion Pills :如果您尝试使用邮递员来解决这个问题,它只会返回您的 html @ShashankGaurav 我对你的问题感到困惑;你想用 Postman 做什么? 我删除了将所有文件添加到文件夹中的所有内容,添加了app.use(express.static("folderName"));,并且繁荣在根/ url 中工作。谢谢!

以上是关于express:如何使用 sendFile 将 html 和 css 一起发送?的主要内容,如果未能解决你的问题,请参考以下文章

Express res.sendFile 没有上传 CSS

express之sendFile

如何防止用户直接在 express 中访问路由?

如何在使用 res.sendFile() 将请求发送回客户端之前等待文件创建完成

如何使用反应返回文件?或 express 的 `npm unload` 类似物

如何在带有 nunjucks 的 Express 框架中使用 HTML - 没有玉