今天晚上学习了一下怎么搭建服务器,使用原生的http模块,在这里总结一下心得。
首先我们介绍几个模块内容,(模块的方法只是介绍我们用的):
- var http = require('http');
- var fs = require('fs');
- var url = require('url');
首先我们需要使用http模块
//创建一个服务器,这里采用es6语法
var server = http.createServer((req,res) =>{
//获取url地址,这里与浏览端获取的有所不同
var urlObj= url.parse(req.url,true);
//拿到对应的路径地址
var pathname =urlObj.pathname;
var reg=/\.(html|css|js)/i;
if(reg.test(pathname)){
var suffixType="html/plain";
var sunffix=reg.exec(pathname)[1].toUpperCase();
switch(suffix){
case "HTML":
suffixType = "text/html";
break;
case "JS":
suffixType = "text/javascript";
break;
case "CSS":
suffixType = "text/css";
break;
}
//打开文件流查找对应的文件。
fs.readFile("."+pathname,"utf8", (err, data) => {
if (err){
res.writeHead(404, {'content-type': suffixType + ";charset=utf-8;"});
return;
}
res.writeHead(200, {'content-type': suffixType + ";charset=utf-8;"});
res.end(data);
});
}
});
server.listen('12345',() => {
console.log("端口启动"+"12345");
})
这样子就可以获取静态资源了。
这里在介绍两个东西
1.获取前端传来的数据
var body = '';
req.on('data', function (data) {
//得到前台的数据
console.log(data.toString('utf8'));
});
res.on('end', function () {
console.log("Body: " + body);
});
req.on('timeout',function(){
console.log('timeout got :');
res.writeHead(404, {'content-type': suffixType + ";charset=utf-8;"});
res.end();
return ;
})
return;
2.如果资源找不到,返回404错误
setTimeout(function(){
req.emit('timeout',{message:'have been timeout...'});
return ;
},3000);
//三秒后触发 事件
req.on('timeout',function(){
console.log('timeout got :');
res.writeHead(404, {'content-type': suffixType + ";charset=utf-8;"});
res.end();
return ;
})