1 /** 2 * node入门之综合案例(一):简易路由 3 * @Author : by Ghost 4 * @Date : 2016/07/11 5 * @Description : 6 * 1、引入以下模块 7 * http模块:创建服务器,处理请求和相应 8 * URL模块:解析url请求地址 9 * fs模块:读取文件10 * path模块:处理文件路径,获取文件后缀名,路径优化11 *12 * 2、使用http.createServer()方法创建服务器13 * 3、使用url.parse()方法解析浏览器请求路径14 * 4、使用fs.readFile()方法读取对应的静态文件15 * 5、使用path.extname()方法获取文件后缀名16 * 6、设置MIME类型,实现文件兼容17 * */18 19 //引入模块20 var http = require('http');21 var url = require('url');22 var fs = require('fs');23 var path = require('path');24 25 //创建服务器,监听3000端口26 var server = http.createServer(function (req, res) {27 //屏蔽/favicon.ico的请求28 if(req.url === '/favicon.ico')29 {30 return ;31 };32 33 //解析请求路径34 var pathname = url.parse(req.url).pathname;35 36 //默认首页37 if(pathname.indexOf('.') === -1)38 {39 pathname = "/index.html"40 };41 42 //获取文件后缀名43 var extname = path.extname(pathname);44 45 //读取文件46 fs.readFile('./static/' + pathname, function (err,data) {47 //如果出错则表示请求路径不正确,显示40448 if(err){49 fs.readFile("./static/404.html",function(err,data){50 res.writeHead(404,{"Content-Type":"text/html;charset=UTF-8"});51 res.end(data);52 });53 return;54 };55 56 //读取数据57 //结束响应58 getMime(extname,function(mime){59 res.writeHead(200,{"Content-Type": mime});60 res.end(data);61 });62 });63 });64 65 //设置监听端口66 server.listen(3000,'127.0.0.1', function () {67 console.log("server is started listen port 3000");68 });69 70 //getMIME()71 function getMime(extname,callback)72 {73 fs.readFile('./static/mime.json', function (err,data) {74 if(err)75 {76 throw Error("找不到mime.json文件");77 return;78 };79 var mimeJson = JSON.parse(data);80 var mime = mimeJson[extname] || "text/plain";81 //执行回调函数,结束异步问题82 callback(mime);83 });84 }