静态Web服务器的目录结构:
index.js文件
const http=require("http");
let server=require("./model/server.js")
http.createServer(server).listen(8100,"localhost",()=>{
console.log("127.0.0.1:8100");
})
readType.js文件
const fs=require("fs");
module.exports=(callback)=>{
//异步
// fs.readFile("model/mime.json",(err,data)=>{
// if(err){
// throw err;
// }
// let json=JSON.parse(data.toString("utf-8"));
// callback(json);
// })
// 同步
let json=JSON.parse(fs.readFileSync("model/mime.json").toString("utf-8"))
return json;
}
server.js文件
const url=require("url");
const fs=require("fs");
const pathmodule=require("path");
let mime=require("./mime.json");
module.exports=(req,res)=>{
//路径解析 与 获取名称
let path=url.parse(req.url).pathname;
//将无效的请求过滤掉
if(path!="/favicon.ico"){
//默认加载首页
if(path=="/"){
path="index.html";
}
//name为后缀名 网页图片加载出来为image/gif格式
let name=pathmodule.extname(path);
//这里注释的是异步方法的返回,使用异步的话代码会执行多次
// mime((result)=>{
// console.log(result);
// })
//从后缀名的文件中取后缀名的格式
let houname=mime[name];
//console.log(houname);
res.writeHead(200,{"Content-Type":`${houname};charset=utf-8`});
fs.readFile("static/"+path,(err,data)=>{
if(err){
throw err;
}
res.write(data);
res.end();
})
}
}