zoukankan      html  css  js  c++  java
  • NodeJS测试实例

    实例一:

    先来个简单的实例,把下面的代码保存为main.js,让自己欣喜下:

    var http = require("http");
    
    function onRequest(request, response){
          console.log("Request received.");
          var str='{"id":"0036",name:"jack",arg:123}';
          response.writeHead(200,{"Content-Type":'text/plain','charset':'utf-8','Access-Control-Allow-Origin':'*','Access-Control-Allow-Methods':'PUT,POST,GET,DELETE,OPTIONS'});
          //response.writeHead(200,{"Content-Type":'application/json','Access-Control-Allow-Origin':'*','Access-Control-Allow-Methods':'PUT,POST,GET,DELETE,OPTIONS'});
          //response.write("Hello World 8888
    ");
          response.write(str);
          response.end();
    }
    
    http.createServer(onRequest).listen(8888);
    
    console.log("Server has started.port on 8888");

    运行方式是在命令行中,直接输入:node main.js,然后打开IE浏览器输入http://127.0.0.1:8888,就可以到熟悉的内容了。

    ======================================================================

    实例二:

    通过读去json文件,发送json数据到浏览器,把下面的代码保存为json.js,

    var http = require("http");
    var fs = require("fs");
    var str='{"id":"123",name:"jack",arg:11111}';
    
    function onRequest(request, response){
          console.log("Request received.");
          response.writeHead(200,{"Content-Type":'text/plain','charset':'utf-8','Access-Control-Allow-Origin':'*','Access-Control-Allow-Methods':'PUT,POST,GET,DELETE,OPTIONS'});//可以解决跨域的请求
          //response.writeHead(200,{"Content-Type":'application/json',            'Access-Control-Allow-Origin':'*','Access-Control-Allow-Methods':'PUT,POST,GET,DELETE,OPTIONS'});
          //response.write("Hello World 8888
    ");
          str=fs.readFileSync('data.txt');
          response.write(str);
          response.end();
    }
    
    http.createServer(onRequest).listen(8888);
    
    console.log("Server has started.port on 8888
    ");
    console.log("test data: "+str.toString());

    然后再相同目录下保存一个data.txt文件,内容为:

    {"id":"0036",name:"jack",arg:32100,
    remark:"test data"}

    运行方式是在命令行中,直接输入:node json.js,然后打开IE浏览器输入http://127.0.0.1:8888,就可以到熟悉的内容了。

    ======================================================================

    实例三:

    读写ini文件,首先使用ini文件库,代码如下,保存为ini.js文件

    // 参考出处:http://www.oschina.net/code/snippet_81981_24971
    
    var eol = process.platform === "win32" ? "
    " : "
    "
     
    function INI() {
        this.sections = {};
    }
     
    /**
     * 删除Section
     * @param sectionName
     */
    INI.prototype.removeSection = function (sectionName) {
     
        sectionName =  sectionName.replace(/[/g,'(');
        sectionName = sectionName.replace(/]/g,')');
     
        if (this.sections[sectionName]) {
            delete this.sections[sectionName];
        }
    }
    /**
     * 创建或者得到某个Section
     * @type {Function}
     */
    INI.prototype.getOrCreateSection = INI.prototype.section = function (sectionName) {
     
        sectionName =  sectionName.replace(/[/g,'(');
        sectionName = sectionName.replace(/]/g,')');
     
        if (!this.sections[sectionName]) {
            this.sections[sectionName] = {};
        }
        return this.sections[sectionName]
    }
     
    /**
     * 将INI转换成文本
     *
     * @returns {string}
     */
    INI.prototype.encodeToIni = INI.prototype.toString = function encodeIni() {
        var _INI = this;
        var sectionOut = _INI.encodeSection(null, _INI);
        Object.keys(_INI.sections).forEach(function (k, _, __) {
            if (_INI.sections) {
                sectionOut += _INI.encodeSection(k, _INI.sections[k])
            }
        });
        return sectionOut;
    }
     
    /**
     *
     * @param section
     * @param obj
     * @returns {string}
     */
    INI.prototype.encodeSection = function (section, obj) {
        var out = "";
        Object.keys(obj).forEach(function (k, _, __) {
            var val = obj[k];
            if(k=="___comment")return;
            if (val && Array.isArray(val)) {
                val.forEach(function (item) {
                    out += safe(k + "[]") + " = " + safe(item) + "
    "
                })
            } else if (val && typeof val === "object") {
            } else {
                out += safe(k) + " = " + safe(val) + eol
            }
        })
        if (section && out.length) {
            out = "[" + safe(section) + "]" + eol + out
        }
        if (section || obj.___comment){
            out = obj.___comment + eol + out;
        }
        return out+"
    ";
    }
    
    function safe(val) {
        return (typeof val !== "string" || val.match(/[
    ]/) || val.match(/^[/) || (val.length > 1 && val.charAt(0) === """ && val.slice(-1) === """) || val !== val.trim()) ? JSON.stringify(val) : val.replace(/;/g, '\;')
    }
     
    var regex1 = {
        section: /^s*[s*([^]]*)s*]s*$/,
        param: /^s*([w.-\_@]+)s*=s*(.*?)s*$/,
        comment: /^s*;.*$/
    };
     
     
    var regex = {
        section: /^s*[s*([^]]*)s*]s*$/,
        param: /^s*([w.-\_@]+)s*=s*(.*?)s*$/,
        comment: /^s*[;#].*$/
    };
     
     
    /**
     * @param data
     * @returns {INI}
     */
    exports.parse = function (data) {
        var value = new INI();
        var lines = data.split(/
    |
    |
    /);
        var section = null;
        var comm = null;
        lines.forEach(function (line) {
            if (regex.comment.test(line)) {
                var match = line.match(regex.comment);
                comm = match[0];
                return;
            } else if (regex.param.test(line)) {
                var match = line.match(regex.param);
                if (section) {
                    section[match[1]] = match[2];
                    if(comm)section[match[1]].___comment=comm;
                } else {
                    value[match[1]] = match[2];
                    if(comm)value.___comment =comm;
                }
                comm = null;
            } else if (regex.section.test(line)) {
                var match = line.match(regex.section);
                section = value.getOrCreateSection(match[1]);
                if(comm)section.___comment=comm;
                comm = null;
            } else if (line.length == 0 && section) {
                section = null;
                comm = null;
            }
            ;
        });
        return value;
    }
     
    /**
     * 创建INI
     * @type {Function}
     */
    exports.createINI = exports.create = function () {
        return new INI();
    };
     
    var fs = require('fs');
     
    exports.loadFileSync =function(fileName/*,charset*/){
        return exports.parse(fs.readFileSync(fileName, "utf-8")) ;
    }

    然后创建测试文件iniTest.js文件,

       var INI = require("./INI");//INI模块
       var ini = INI.createINI();//创建一个新的INI
     
       ini.count = 12;//ini文件的Start(没有Section的属性)
     
       //创建一个Section[httpserver]
       var s1 = ini.getOrCreateSection("httpserver");
       s1['host'] = "127.0.0.1";
       s1.port = 8080;
       // 控制台打印
       // count = 12
       //[httpserver]
       //host= 127.0.0.1
       //port= 8080
       console.log("**********************
    " + ini);
       var fs = require('fs');
       fs.writeFileSync('f1.ini',ini);//INI 写入 conf.ini
     
       var ini___ = INI.loadFileSync("f1.ini")//从conf.ini读取配置
       console.log("**********************
    " + ini___);
       var se = ini___.getOrCreateSection("httpserver");//取得httpserver
       se.root = "/temp";//添加新的属性
       se['host'] ="192.168.1.2";//修改属性
       var new_se = ini___.getOrCreateSection("new se");//添加新的Section
       new_se.test = true;
       console.log("**********************
    " + ini___);
       fs.writeFileSync('f1.ini', ini___);//写入文件
       
       ///////////////////////////
       
       ini=INI.loadFileSync("./conf/authz");
       var s2=ini.getOrCreateSection("/");
       console.log("----------------
    " + ini);
       s2["@test"]="r";
       //fs.writeFileSync('./conf/authz', ini);
       fs.writeFileSync('f1.ini', ini);
       
       console.log("---------------------------
    "+ini)
    //   fs.writeFileSync('./conf/authz', ini);
        var ini___ = INI.loadFileSync("f1.ini")//从conf.ini读取配置
        console.log("===========================
    " + ini___);

    然后我又找了个svn的配置文件,文件名为authz,没有扩展名,内容如下:

    #修改authz文件
    root=c:系统盘
    boot=d:oot
    
    ;kkkkkkkk
    [/groups]
    admin = wzw读写
    
    ;this file comment
    [/]
    @admin = rw
    
    [/trunk/doc]
    @dev = rw
    @view = r
    
    [/trunk/src]
    @dev = rw

     运行方式是在命令行中,直接输入:node iniTest.js,就可以到熟悉的内容了。

    ======================================================================

    ======================================================================

  • 相关阅读:
    Atitit fms Strait (海峡) lst 数据列表目录1. 4大洋 12. 著名的海大约40个,总共约55个海 13. 海区列表 23.1. 、波利尼西亚(Polynesia,
    Atitit trave islands list 旅游资源列表岛屿目录1. 东南亚著名的旅游岛屿 21.1. Cjkv 日韩 冲绳 琉球 济州岛 北海道 21.2. 中国 涠洲岛 南澳
    Atitit Major island groups and archipelagos 主要的岛群和群岛目录资料目录1. 岛群 波利尼西亚(Polynesia, 美拉尼西亚(Melanesia,
    Atitit glb 3tie city lst 三线城市列表 数据目录1. 全球范围内约90个城市 三线 12. 世界性三线城市全球共
    Atitit glb 1tie 2tie city lst 一二线城市列表数据约50个一线城市Alpha ++ 阿尔法++,,London 伦敦,,New York 纽约,,Alpha +
    Attit 现代编程语言重要特性目录第一章 类型系统 基本三大类型 2第一节 字符串 数字 bool 2第二节 推断局部变量 2第三节 动态类型 2第二章 可读性与开发效率 简单性 2
    Atitit 未来数据库新特性展望目录1. 统一的翻页 21.1. 2 Easy Top-N
    使用Chrome DevTools(console ande elements panel)进行xpath/css/js定位
    chrome -console妙用之定位xpath/js/css
    表达式树之构建Lambda表达式
  • 原文地址:https://www.cnblogs.com/mq0036/p/5338738.html
Copyright © 2011-2022 走看看