【问题标题】:create a web server for local html using node使用节点为本地 html 创建一个 Web 服务器
【发布时间】:2021-09-14 17:11:14
【问题描述】:

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

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文件,localhost上的网页还是旧的,需要重启服务器才能看到修改。

我想改进它,我尝试使用 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 moudle 来实现?

【问题讨论】:

    标签: javascript node.js server


    【解决方案1】:

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

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

    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 将提供缓存优势,我建议您使用它而不是滚动您自己的。

    【讨论】:

      【解决方案2】:

      您可以使用nodemon

      npm install -g nodemon
      
      nodemon server.js
      

      【讨论】:

      • 重启服务器实在是太过分了(问题表明 OP 明确希望避免重启服务器)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-29
      • 2021-06-05
      • 2021-07-02
      • 1970-01-01
      • 2021-03-27
      相关资源
      最近更新 更多