码迷,mamicode.com
首页 > Web开发 > 详细

基于Node.js搭建静态服务器

时间:2014-11-23 21:43:46      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:style   http   io   ar   color   os   sp   java   for   

  作者:zhanhailiang 日期:2014-11-23

原理:

  1. 通过解析请求url来解析到相应文件路径;
  2. 判断文件是否存在;
  3. 若存在,则读取文件内容输出;

实现:

var path = require(‘path‘),
    fs = require(‘fs‘);
 
require(‘http‘).createServer(function(req, res) {
    // 解析文件路径,默认以当前目录为根目录查找文件
    // 这里可以通过配置root值来做为相对根目录查找文件
    var file = path.normalize(‘.‘ + req.url);
    console.log(‘Trying to serve‘, file);
    function reportError(err) {
        console.log(err);
        res.writeHead(500);
        res.end(‘Internal Server Error‘);
    }
 
    // 判断文件是否存在
    path.exists(file, function(exists) {
        // 文件存在,则读取文件流,输出
        if (exists) {
            fs.stat(file, function(err, stat) {
                var rs;
                if (err) {
                    return reportError(err);
                }
 
                if (stat.isDirectory()) {
                    res.writeHead(403); res.end(‘Forbidden‘);
                } else {
                    rs = fs.createReadStream(file);
                    rs.on(‘error‘, reportError);
                    res.writeHead(200);
                    rs.pipe(res);
                }
            });
        // 404
        } else {
            res.writeHead(404);
            res.end(‘Not found‘);
        }
    });
}).listen(4000);

完整源码:https://github.com/billfeller/professional-nodejs/tree/master/chapter11

参考:<Professional Node.js> Chapter11 Building HTTP Servers

最后:

以上只是一个实现静态服务器的示例,生产应用仍然首选Nginx。

基于Node.js搭建静态服务器

标签:style   http   io   ar   color   os   sp   java   for   

原文地址:http://blog.csdn.net/billfeller/article/details/41417207

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!