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

页面导航:首页 > 网络编程 > JavaScript > 基于Node.js搭建静态服务器

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

来源: 作者: 时间:2016-02-05 11:06 【

作者:zhanhailiang 日期:2014-11-23原理:通过解析请求url来解析到相应文件路径;判断文件是否存在;若存在,则读取文件内容输出;实现:var path = require( path ), fs =
  作者: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

    参考: Chapter11 Building HTTP Servers

    最后:

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

Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<