Node实现静态服务器
2017-10-28 03:18
323 查看
1.Node不是Apache,Node做的事顶层路由设计,Apache帮你做了一切,而Node你要自己设计,自己手写。所以现在的缺点就是全部都是200,没有304。缓存问题。
2.继上次的getMime,这里是完成作业,读取JSON,把所有的文件类型对应起来。注意这里的getMime因为又有了一层fs的readFile的异步,这里返回最后的mime不一定是我们要的mime。这里的解决办法是把读取写在回调里,回调函数的执行时在异步之后,这里的mime已经完成了对应,同步-》异步-》回调,用上callback。
资源:
代码:
这时候的慕课,css,js都能加载了:
2.继上次的getMime,这里是完成作业,读取JSON,把所有的文件类型对应起来。注意这里的getMime因为又有了一层fs的readFile的异步,这里返回最后的mime不一定是我们要的mime。这里的解决办法是把读取写在回调里,回调函数的执行时在异步之后,这里的mime已经完成了对应,同步-》异步-》回调,用上callback。
资源:
代码:
var http = require("http"); var fs = require("fs"); var url = require("url"); var path = require("path"); var server = http.createServer(function(req, res) { var pathname = url.parse(req.url).pathname; //判断此时用户输入的地址是文件夹地址还是文件地址 //如果是文件夹地址,那么自动请求这个文件夹中的index.html if(pathname.indexOf(".") == -1) { pathname += "./index.html"; } //输入的网址是127.0.0.1/images/logo.png //实际请求的是./static/images/logo.png var fileURL = "./" + path.normalize("./static/" + pathname); //得到拓展名 var extname = path.extname(pathname); //把文件读出来 fs.readFile(fileURL, function (err, data) { //读完之后做的事情 if(err) { //文件不存在 res.writeHead(404,{"Content-Type":"text/html;charset=UTF8"}); res.end("404,页面没有找到"); } //读完之后做的事情 getMime(extname, function (mime) { res.writeHead(200,{"Content-Type":mime}); res.end(data); }); }); }); server.listen(80,"127.0.0.1"); function getMime(extname,callback) { //读取mime.json文件,得到JSON,根据extname key,返回对应的value //读取文件 fs.readFile("./mime.json",function (err, data) { if(err) { throw Error("找不到mime.json文件!"); return ; } //转成JSON var mimeJSON = JSON.parse(data); var mime = mimeJSON[extname] || "text/plain"; //读完执行回调函数,mime类型字符串,就是它的参数 callback(mime); }); }
这时候的慕课,css,js都能加载了:
相关文章推荐
- 用NodeJS/express-4.0实现的静态文件服务器(serveStatic插件直接支持HTTP Range请求,因此可用来做mp4流媒体服务器)
- node和express分别实现静态文件服务器
- npm scrpit/node实现静态资源(js/css)复制重命名(版本号)、压缩tar.gz、上传至服务器
- Node实现静态服务器2
- 手写Node静态资源服务器的实现方法
- Node.js静态服务器的实现方法
- Node.js实现网游服务器高性能和可扩展
- Nodejs实现的一个静态服务器实例
- 转载和积累系列 - Nodejs 实现静态服务器
- 使用Node.js搭建静态资源服务器
- Apache服务器中使用.htaccess实现伪静态URL的方法
- Node.js 实现简单的接口服务器
- 【原创】分布式之缓存击穿 【原创】自己动手实现静态资源服务器 【原创】自己动手实现JDK动态代理
- 基于HTTP模拟实现静态服务器-多任务多线程
- Node.js Redis Expess 开发环境配置及Session实现服务器间共享实例
- 第四十六篇:MAC下使用 Node.js 实现一个 WebServer 服务器
- Node.js静态文件服务器实战[转]
- Python实现web静态服务器
- 基本Web服务器的实现——Node.js实现响应浏览器请求