使用节点为本地 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文件,本地主机上的网页仍然是旧的,我需要重新启动服务器才能使更改可见。
我想改进它,我尝试使用 koa 或 express,如下面的代码
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 将提供缓存优势,我建议您使用它而不是自己滚动。
我正在尝试为 运行 我的本地 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文件,本地主机上的网页仍然是旧的,我需要重新启动服务器才能使更改可见。
我想改进它,我尝试使用 koa 或 express,如下面的代码
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 将提供缓存优势,我建议您使用它而不是自己滚动。