Node.js HTTP文件
2018-02-17 11:25 更新
服务基础HTML
以下部分显示了如何创建一个简单的Web服务器,从文件夹返回HTML文件。
创建一个简单的HTML文件,名为index.html,我们计划返回在服务器上的每个请求GET'/'。
You are looking lovely!
以下代码显示如何向客户端提供静态html文件。
var http = require("http");
var fs = require("fs");
//from www.w3cschool.cn
function send404(response) {
response.writeHead(404, { "Content-Type": "text/plain" });
response.write("Error 404: Resource not found.");
response.end();
}
var server = http.createServer(function (req, res) {
if (req.method == "GET" && req.url == "/") {
res.writeHead(200, { "content-type": "text/html" });
fs.createReadStream("./public/index.html").pipe(res);
} else {
send404(res);
}
}).listen(3000);
console.log("server running on port 3000");
如果启动服务器(运行节点server.js)并在http://localhost:3000上打开浏览器,你将看到我们之前创建的HTML页面。
服务目录
首先,创建一个简单的客户端JavaScript文件,在HTML加载完成后附加到正文。
我们计划从服务器请求此JavaScript文件。
window.onload = function () { document.body.innerHTML += "Talk JavaScript with me"; }
通过在< head>中添加脚本标记,加载客户端JavaScript文件,以修改我们的简单HTML文件。
为了支持这个JavaScript加载,我们需要使用path模块来解析基于request.url属性的文件系统上的文件的路径。
我们还需要看看我们是否有为请求的文件类型注册的MIME类型。
我们必须确保该文件存在,然后尝试从文件系统读取它。
这是向客户端提供文件夹的源代码。
var http = require("http");
var fs = require("fs");
var path = require("path");
// www.w3cschool.cn
function send404(response) {
response.writeHead(404, { "Content-Type": "text/plain" });
response.write("Error 404: Resource not found.");
response.end();
}
var mimeLookup = {
".js": "application/javascript",
".html": "text/html"
};
var server = http.createServer(function (req, res) {
if (req.method == "GET") {
var fileurl;
if (req.url == "/")
fileurl = "/index.html";
else
fileurl = req.url;
var filepath = path.resolve("./public" + fileurl);
var fileExt = path.extname(filepath);
var mimeType = mimeLookup[fileExt];
if (!mimeType) {
send404(res);
return;
}
fs.exists(filepath, function (exists) {
if (!exists) {
send404(res);
return;
};
res.writeHead(200, { "content-type": mimeType });
fs.createReadStream(filepath).pipe(res);
});
} else {
send404(res);
}
}).listen(3000);
console.log("server running on port 3000");
以上内容是否对您有帮助:
更多建议: