• 用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);
  • 相关阅读:
    linux查看安装文件
    mysql 查询表结构
    linux回退到上次访问目录
    正则表达式匹配所有字符包括换行符
    Spring配置文件中使用表达式
    Ext 修改Store初始化加载完后修改record属性。
    数据库锁
    C#中的多线程使用 -- Thread 类详解(转)
    div背景等比例缩小
    div添加透明边框透明背景css
  • 原文地址:https://www.cnblogs.com/jervy/p/10008960.html
Copyright © 2020-2023  润新知