Node創建靜態服務器
預備工作
在項目中新建static文件夾,新建404.html、index.html、css文件夾(css測試文件)、image文件夾(image測試文件)、js文件夾(js測試文件)、json文件夾(json測試文件)等靜態文件。
響應式請求頭
exports.getType = function (extname) {
switch (extname) {
case '.html':
return 'text/html';
case '.css':
return 'text/css';
case '.js':
return 'text/javascript';
case '.jpeg':
return 'img';
default:
return 'text/html';
}
};
處理類似/index.html?43894349493
pathName = url.parse(req.url).pathname;
完整代碼
const getType = require('./getType').getType;
const http = require('http');
const fs = require('fs');
const path = require('path');
const url = require('url');
http.createServer(function (req, res) {
let pathName = req.url;
// console.log(pathName);
// console.log(url.parse(req.url).pathname);
pathName = url.parse(req.url).pathname;
pathName === '/' ? pathName = '/index.html' : "";
// console.log(pathName);
fs.readFile('./static' + pathName, function (err, data) {
// console.log('./static' + pathName);
if (err) {
console.log('404');
fs.readFile('./static/404.html', function (error, data) {
res.writeHead(404, {"Content-Type":"text/html;charset='uft-8'"});
res.write(data);
res.end();
});
return;
}
// console.log(pathName);
let type = getType(path.extname(pathName));
res.writeHead(200, {"Content-Type":type + ";charset='uft-8'"});
res.write(data);
res.end();
})
}).listen(8080);