一尘不染

表达:如何使用sendFile将HTML和CSS一起发送?

node.js

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)并将它们集成到客户端?


阅读 526

收藏
2020-07-07

共1个答案

一尘不染

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

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

但是,随着您添加更多文件,这将变得非常麻烦。Express提供了一种内置的方式来服务静态文件:

https://expressjs.com/cn/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("/"它。

2020-07-07