web服务器介绍
web服务器一般指网络服务器,是指驻留于因特网上某种类型计算机程序,可以向浏览器等web客户端提供文档,也可以放置网站,让全世界浏览;可以放置数据文件,让全世界下载。目前最主流的三个web服务器是Apache Nginx IIS
nodejs创建web服务器
const http = require("http");
http
.createServer((req, res) => {
res.writeHead(200, { "Content-Type": "text/html;charset='utf-8'" });
res.write("你好,nodejs");
res.end();
})
.listen("8000");
实现静态web服务
思路:获取文件路径,将文件返回给浏览器。
const http = require("http");
const fs = require("fs");
http
.createServer((req, res) => {
let pathName = req.url; //获取路径
if (pathName == "/") {
//默认加载首页
pathName = "/index.html";
}
if (pathName != "/favicon.ico") {
//过滤'/favicon.ico',req.url是两个路径。
//文件操作,获取static下面的index.html
fs.readFile("static/" + pathName, function(err, data) {
if (err) {
//找不到指定文件
console.log(err);
return;
} else {
res.writeHead(200, { "Content-Type": "text/html;charset='utf-8'" });
res.write(data);
res.end();
}
});
}
})
.listen("8000");
一个简单的web服务器创建完毕。
注意事项:此文件为server.js,static文件问当前文件夹下的文件。
存在问题,头文件设置是text/html,虽然能加载出其他文件,但是不能正常渲染
解决办法:根据文件改变请求头。
1、path模块var extname = path.extname("index.html")可输出.html
2、编写方法根据后缀名输出对应的头文件,
function getMime(extname) {
switch (extname) {
case ".html":
return "text/html";
case ".css":
return "text/css";
case ".js":
return "text/javascript";
default:
return "text/html";
}
};
var mime = getMime(extname)
res.writeHead(200, { "Content-Type": `${mime};charset='utf-8'` });
除此之外可以使用mime.json文件改变头文件
思路找一个mime.json文件,使用readFileSync()读取json文件匹配头文件并返回
const fs = require("fs");
module.exports = function(extname) {
var res = fs.readFileSync("./static/mime.json");
console.log(JSON.parse(res.toString())[extname]);
return JSON.parse(res.toString())[extname];
};
找不到文件,返回404页面