使用节点为本地 html 创建 Web 服务器

create a web server for local html using node

我正在尝试为 运行 我的本地 html 文件创建一个简单的 Web 服务器,现在我可以使用下面的代码在本地主机上 运行ning

var http = require('http');
var fs = require('fs');
var index = fs.readFileSync('index.html', 'utf8');

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'html'});
  res.end(index);
}).listen(3000);

但是有一个问题,每次我更改我的html文件,本地主机上的网页仍然是旧的,我需要重新启动服务器才能使更改可见。

我想改进它,我尝试使用 koaexpress,如下面的代码

const express = require("express");
const app = express();

app.listen(3000, () => {
  console.log("Application started and Listening on port 3000");
});

app.get("/", (req, res) => {
  res.sendFile("test.html");
});

而且我发现 express 可以提供实时 html 文件,我不需要在文件更改时重新启动服务。

如何使用 http 模块来实现?

您可以使用 nodemon.

npm install -g nodemon

nodemon server.js

目前您在程序启动时读取文件。然后每次收到请求时,您都会提供变量中的数据。

将该代码移到收到请求时运行的回调函数中,然后每次收到请求时都会更新它。

http.createServer(function (req, res) {
  var index = fs.readFileSync('index.html', 'utf8');
  res.writeHead(200, {'Content-Type': 'html'});
  res.end(index);
}).listen(3000);

您可以通过在函数外部设置变量(如在您的原始代码中)和watching更改文件(并更新变量作为响应)来避免在每次请求时读取文件。

也就是说,使用 Express 及其 static module 将提供缓存优势,我建议您使用它而不是自己滚动。