var fs = require('fs'); var mime = require('mime'); /** * 静态资源请求 * @return {[type]} [description] */ module.exports = Behavior(function(){ 'use strict'; return { options: { 'url_resource_on': false }, run: function(){ if (!global.RESOURCE_PATH || !this.options.url_resource_on || !this.http.pathname) { return false; } var pathname = this.http.pathname; if (pathname.indexOf('/') === 0) { pathname = pathname.substr(1); } var reg = C('url_resource_reg'); //通过正则判断是否是静态资源请求 if (!reg.test(pathname)) { return false; } var file = RESOURCE_PATH + '/' + pathname; var res = this.http.res; if (fs.existsSync(file)) { var contentType = mime.lookup(file); var fileStream = fs.createReadStream(file); res.setHeader('Content-Type', contentType + '; charset=' + C('encoding')); fileStream.pipe(res); fileStream.on('end', function(){ res.end(); }); }else{ res.statusCode = 404; res.end(); } //返回一个pendding promise, 不让后续执行 return getDefer().promise; } }; });