nodejs 一个简单的web服务器,用于前端自己快速测试部署
(node环境)启动命令:node node-web-server.js
var http=require('http');
var fs = require('fs');
var url = require('url');
//创建服务器
http.createServer(function(request,response) {
//后端设置允许跨域
response. setHeader("Access-Control-Allow-Origin","*");
var parseUrl = url.parse(request.url);
//解析请求,包括文件名
// console.log(parseUrl);
// var parseUrl = url.parse(request.url);
var pathname= decodeURI(parseUrl.pathname);
//输出请求的文件名
console.log("Request for "+ pathname + " received.");
//获取后缀,判断是js还是css文件,如果目录结构不同,此处需要修改
var firstDir = pathname && pathname.split('/')[1];
// var firstDir = pathname && pathname.split('/')[1];
var suffix = pathname && pathname.split('.').slice(-1).toString();
const suffix2Mime = {
'css': 'text/css;charset=utf-8',
'js': 'application/x-javascript;charset=utf-8',
'png': 'image/png',
'xml': 'text/xml',
'xhtml': 'application/xhtml+xml',
'txt': 'text/plain',
'rtf': 'application/rtf',
'pdf': 'application/pdf',
'gif': 'image/gif',
'jpeg': 'image/jpeg',
'au': 'audio/basic',
'midi': 'audio/midi;audio/x-midi',
'ra': 'audio/x-pn-realaudio',
'ram': 'audio/x-pn-realaudio',
'mpg': 'video/mpeg',
'mpeg': 'video/mpeg',
'avi': 'video/x-msvideo',
'gz': 'application/x-gzip',
'tar': 'application/x-tar',
// 'tar': 'application/octet-stream',
};
// 获取请求文件的对应类型
var ContentType = {'Content-Type': suffix2Mime[suffix] || 'text/html;charset=utf-8'};
// console.log(suffix, ContentType);
//从文件系统中去请求的文件内容
fs.readFile(pathname.substr(1),function(err, data) {
if(err) {
console.log(err);
response.writeHead(404, ContentType);
}
else {
//HTTP 状态码 200 : OK
response.writeHead(200, ContentType);
//写会回相应内容
if (['png'].includes(suffix)) {
response.write(data, "binary");
} else {
response.write(data.toString());
}
}
//发送响应数据
response.end();
});
}).listen(8080);
console.log('Server running at http://127.0.0.1:8080/');

浙公网安备 33010602011771号