node.js系列(实例):原生node.js实现静态资源管理
2016-07-11 22:33
726 查看
/** * node入门之综合案例(一):简易路由 * @Author : by Ghost * @Date : 2016/07/11 * @Description : * 1、引入以下模块 * http模块:创建服务器,处理请求和相应 * URL模块:解析url请求地址 * fs模块:读取文件 * path模块:处理文件路径,获取文件后缀名,路径优化 * * 2、使用http.createServer()方法创建服务器 * 3、使用url.parse()方法解析浏览器请求路径 * 4、使用fs.readFile()方法读取对应的静态文件 * 5、使用path.extname()方法获取文件后缀名 * 6、设置MIME类型,实现文件兼容 * */ //引入模块 var http = require('http'); var url = require('url'); var fs = require('fs'); var path = require('path'); //创建服务器,监听3000端口 var server = http.createServer(function (req, res) { //屏蔽/favicon.ico的请求 if(req.url === '/favicon.ico') { return ; }; //解析请求路径 var pathname = url.parse(req.url).pathname; //默认首页 if(pathname.indexOf('.') === -1) { pathname = "/index.html" }; //获取文件后缀名 var extname = path.extname(pathname); //读取文件 fs.readFile('./static/' + pathname, function (err,data) { //如果出错则表示请求路径不正确,显示404 if(err){ fs.readFile("./static/404.html",function(err,data){ res.writeHead(404,{"Content-Type":"text/html;charset=UTF-8"}); res.end(data); }); return; }; //读取数据 //结束响应 getMime(extname,function(mime){ res.writeHead(200,{"Content-Type": mime}); res.end(data); }); }); }); //设置监听端口 server.listen(3000,'127.0.0.1', function () { console.log("server is started listen port 3000"); }); //getMIME() function getMime(extname,callback) { fs.readFile('./static/mime.json', function (err,data) { if(err) { throw Error("找不到mime.json文件"); return; }; var mimeJson = JSON.parse(data); var mime = mimeJson[extname] || "text/plain"; //执行回调函数,结束异步问题 callback(mime); }); }
相关文章推荐
- Node.js 适应场景
- 【nodejs】文件上传demo实现
- Node::onEnter方法讲解
- express 4.0 新属性
- 用NodeJs做一个小爬虫
- 那些年用node接入微信走过的坑之(三)---微信事件监听
- 那些年用node接入微信走过的坑之(二)---微信自定义菜单
- 用node.js 搭建的博客程序心得(node.js实战读书笔记1)
- LeetCode 237. Delete Node in a Linked List
- Node.SelectNodes
- jquery-ui.min.js:5 Uncaught TypeError: b.nodeName.toLowerCase is not a function
- namenode不存在
- nodejs使用nodejs创建简单的静态文件服务器
- 一行命令搞定node.js 版本升级
- nodejs 安装没有找到 configure
- co与generator
- node.js利用gulp 启动webServer服务
- nodejs 工具
- NodeJs:module.filename、__filename、__dirname、process.cwd()和require.main.filename 解惑
- hadoop datanode 磁盘数据平衡