1. 案例简介:
不使用任何框架,纯node.js搭建静态网站服务。
2. 案例目录结构:
3. 案列图示(部分):
4. 主要代码(server.js):
//引入模块
let http = require('http');
let url = require('url');
let fs = require('fs');
let path = require('path');
//引入自定义方法
let mimeModel = require('./model/getmime-all')
//创建服务 访问 http://localhost:8002/
http.createServer((req,res)=>{
//获取请求文件名 如 index.html
let pathName = url.parse(req.url,true).pathname;
if(pathName == '/'){
pathName = '/index.html'
}
//获取请求文件的后缀名 如.html
let extName = path.extname(pathName);
if(pathName != '/favicon.ico'){//过滤favicon请求
console.log(pathName);
//读取请求的静态文件 如index.html
fs.readFile('static'+pathName,(err,data) => {
if(err){//读取失败 返回404.html
console.log('404');
fs.readFile('static/404.html',function(error,data404){
if(error){
console.log(error);
}else{
res.writeHead(404,{"Content-Type":"text/html;charset='utf-8'"});
res.write(data404);
res.end(); /*结束响应*/
}
})
}else{
let mime = mimeModel.getMime(fs,extName);//获取文件类型
res.writeHead(200,{'Content-Type':""+mime+";charset=utf-8"})
res.write(data)//返回请求文件内容
res.end();
}
})
}
}).listen(8002)
5. 源码: