Web Server之处理静态文件
标签(空格分隔): webserver
细心的同学会发现,在express server的代码中,包含这么一句app.use('/static', express.static('public'));
,什么用呢?这个是用来处理静态文件,所有访问/static
及其子目录下的url均会检查静态文件,如果静态文件存在,则直接返回静态资源。
是不是很简单,但是我们还得深挖一下,看这货到底是怎么实现的。
handle static file
我们还是通过原生态的httpServer,新建一个静态文件的处理流程。
var http = require("http");
var url = require("url");
var fs = require("fs");
var mimeType = require("mime-types");
http.createServer(function(req, res){
var obj = url.parse(req.url);
var pathname = obj.pathname;
if(pathname.indexOf("/static")===0){
var fileName = __dirname + pathname;
fs.stat(fileName, function(err, is){
if(err){
console.error(err);
res.writeHead(500, "Error occur.");
res.end();
}
else{
if(is.isFile()){
fs.readFile(fileName, function(err, buf){
if(err){
console.error(err);
res.writeHead(500, "Read file error.");
res.end();
}
else{
var tempObject = {
"Content