用利用 HTTP、URl、PATH 以及 FS 模块创建一个 WEB 服务器

用利用 HTTP、URl、PATH 以及 FS 模块创建一个 WEB 服务器

十月 16, 2018

一、WEB 服务器介绍

Web 服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等 Web 客户端提供文档,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。目前最主流的三个 Web 服务器是 Apache、Nginx、IIS。

二、使用 Nodejs 创建一个 WEB 服务器

主程序 service.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
var http=require('http');
var fs=require('fs');
var path=require('path'); /*nodejs自带的模块*/
var url=require('url');

//引入扩展名的方法是在静态文件里面获取到的,mime 可以让服务器识别正确的扩展名

var mimeModel=require('./model/getmimefromfile.js');

http.createServer(function(req,res){

//xxx.json?214214124,问号后面的静态文件里没有,会报错,需要提取 xxx.json

var pathname=url.parse(req.url).pathname;
console.log(pathname);

if(pathname=='/'){
pathname='/index.html'; /*默认加载的首页*/
}

//获取文件的后缀名
var extname=path.extname(pathname);

if(pathname!='/favicon.ico'){ /*过滤掉图标 favicon.ico*/

fs.readFile('static/'+pathname,function(err,data){

if(err){ /*没有这个网页的文件*/
console.log('404');
fs.readFile('static/404.html',function(error,data404){

if(error){
console.log(error);
}
res.writeHead(404,{"Content-Type":"text/html;charset='utf-8'"});
res.write(data404);
res.end(); /*结束响应*/
})

}else{ /*返回这个文件*/
var mime=mimeModel.getMime(fs,extname); /*获取文件类型*/
res.writeHead(200,{"Content-Type":""+mime+";charset='utf-8'"});
res.write(data);
res.end(); /*结束响应*/
}
})
}
}).listen(8002);

mime.json
1

getmimefromfile.js

1
2
3
4
5
6
7
8
exports.getMime=function(fs,extname){  /*获取后缀名的方法*/

//加 Sync 把读取数据改成同步
var data=fs.readFileSync('./mime.json');
//data.toString() 转换成json字符串
var Mimes=JSON.parse(data.toString()); /*把json字符串转换成json对象*/
return Mimes[extname] || 'text/html';
}