var http = require("http");
var fs = require("fs");
var url = require("url");
var path = require("path");
var server = http.createServer(function(req,res){
// 转为对象,取出pathname
var pathname = url.parse(req.url).pathname; // 获取不带参数的路径
if(pathname.indexOf('.') == -1){ // 是文件夹的话找文件夹下的login.html
pathname +='/login.html';
}
// normalize //变/,也执行..返回上一级什么的
// 127.0.0.1/images/logo.png
// ./static/images/logo.png 实际读的是这个文件
//取后缀名
var fileURL = './'+path.normalize('./static/'+pathname);
var extname = path.extname(fileURL); // 取后缀名 .html .css等
fs.readFile(fileURL,function(err,data){
if(err){
res.writeHead(404, {
'Content-Type': 'text/html;charset=UTF8'
});
res.end('页面没有找到');
}
var mime = getMime(extname); // 执行函数,不同的后缀名返回不同的值
res.writeHead(200, {
'Content-Type': mime
});
res.end(data);
});
});
server.listen(8080,'127.0.0.1');
function getMime(extname){
// 读json文件,传key 返回value
fs.readFile('./mime.json',function(err,data){
if(err){
throw Error('没找到json文件');
return;
}
// data转为对象类型
var mimeJson = JSON.parse(data);
console.log(mimeJson[extname]);
return mimeJson[extname];
});
}
发生错误,因为函数是异步的,
var mime = getMime(extname); 还没执行完就往下执行了,解决方法:使用回调函数 回调函数callback把mime值带回来,再往下执行
var http = require("http");
var fs = require("fs");
var url = require("url");
var path = require("path");
var server = http.createServer(function(req,res){
// 转为对象,取出pathname
var pathname = url.parse(req.url).pathname; // 获取不带参数的路径
if(pathname.indexOf('.') == -1){ // 是文件夹的话找文件夹下的login.html
pathname +='/login.html';
}
// normalize //变/,也执行..返回上一级什么的
// 127.0.0.1/images/logo.png
// ./static/images/logo.png 实际读的是这个文件
//取后缀名
var fileURL = './'+path.normalize('./static/'+pathname);
var extname = path.extname(fileURL); // 取后缀名 .html .css等
fs.readFile(fileURL,function(err,data){
if(err){
res.writeHead(404, {
'Content-Type': 'text/html;charset=UTF8'
});
res.end('页面没有找到');
}
// 执行函数,不同的后缀名返回不同的值
getMime(extname,function(mime){
res.writeHead(200, {
'Content-Type': mime
});
res.end(data);
});
});
});
server.listen(8080,'127.0.0.1');
function getMime(extname,callback){
// 读json文件,传key 返回value
fs.readFile('./mime.json',function(err,data){
if(err){
throw Error('没找到json文件');
return;
}
// data转为对象类型
var mimeJson = JSON.parse(data);
console.log(mimeJson[extname]);
callback(mimeJson[extname]);
});
}