zoukankan      html  css  js  c++  java
  • 用node写个简单的静态服务器

    直接上代码吧,我把它命名为 app.js, 只要在该文件所在目录下,控制台运行 node app.js 即可启动一个本地服务器了。

    /**
     * 服务器
     * Author    jervy
     * Date     
     */
    
    var MINE_TYPES = {
        'html':     'text/html',
        'xml':         'text/xml',
        'txt':         'text/plain',
        'css':         'text/css',
        'js':         'text/javascript',
        'json':     'application/json',
        'pdf':         'application/pdf',
        'swf':         'application/x-shockwave-flash',
        'svg':         'image/svg+xml',
        'tiff':     'image/tiff',
        'png':         'image/png',
        'gif':         'image/gif',
        'ico':         'image/x-icon',
        'jpg':         'image/jpeg',
        'jpeg':     'image/jpeg',
        'wav':         'audio/x-wav',
        'wma':         'audio/x-ms-wma',
        'wmv':         'video/x-ms-wmv',
        'woff2':     'application/font-woff2'
    };
    var PORT = 3000;
    var http = require('http');
    var url = require('url');
    var fs = require('fs');
    var path = require('path');
    var root = process.cwd();
    
    var server = http.createServer(function(request, response) {
        var pathname = decodeURIComponent(url.parse(request.url).pathname);
        var realPath = path.join(root, pathname);
        var ext = path.extname(realPath);
        if (!ext) {
            realPath = path.join(realPath, '/index.html');
            ext = '.html'
        }
        fs.exists(realPath, function(exists) {
            if (exists) {
                fs.readFile(realPath, 'binary', function(err, file) {
                    if (!err) {
                        response.writeHead(200, {
                            'Content-Type': MINE_TYPES[ext.slice(1)] || 'text/plain'
                        });
                        response.write(file, 'binary');
                        response.end();
                    } else {
                        response.writeHead(500, {
                            'Content-Type': 'text/plain'
                        });
                        response.write('ERROR, the reason of error is ' + err.code + '; Error number is ' + err.errno + '.');
                        response.end();
                    }
                })
            } else {
                response.writeHead(404, {
                    'Content-Type': 'text/plain'
                });
                response.write('This request URL ' + pathname + ' was not found on this server.');
                response.end();
            }
        });
    
    });
    server.listen(PORT);
    console.log("server running at port " + PORT);
  • 相关阅读:
    HDU5418.Victor and World(状压DP)
    POJ2686 Traveling by Stagecoach(状压DP)
    POJ3254Corn Fields(状压DP)
    HDU5407.CRB and Candies(数论)
    CodeForces 352D. Jeff and Furik
    CodeForces 352C. Jeff and Rounding(贪心)
    LightOj 1282 Leading and Trailing
    Ural 1057. Amount of Degrees(数位DP)
    HDU 2089 不要62 (数位DP)
    HDU5366 The mook jong (DP)
  • 原文地址:https://www.cnblogs.com/jervy/p/10008960.html
Copyright © 2011-2022 走看看