美文网首页
nodejs(上)

nodejs(上)

作者: bo_bo_bo_la | 来源:发表于2018-01-24 21:14 被阅读40次

    events

    事件

    • 又称为发布订阅模式

    • 又称为观察者模式

    • 当主题对象发生变化时,会通知所有的观察者对象,更新自己的行动

    获取时间模块

    var events = require("events");
    

    注册事件

    // 方法1
    newDad.addListener("lee",test1);
    // 方法2
    newDad.on("lee",test2)
    // 绑定一次的事件
    newDad.once("le",test1);
    

    发射事件

    // 当用addListener或者on绑定事件的时候,同一个事件可以发射多次
    newDad.emit("lee");
    newDad.emit("lee");
    // 但当用once绑定的事件时,无论发射几次该事件,只会执行一次
    newDad.emit("le");
    newDad.emit("le");
    

    删除事件

    //  删除绑定的事件
    newDad.removeListener("lee",test1);
    //  删除所有的事件,既然是删除所有事件,里面就不需要加参数
    newDad.removeAllListeners();
    

    buffer

    buffer:缓存区,暂时存放在内存里的一段数据。JS语言自身只有字符串类型,没有二进制数据类型,在处理文件流时,必须使用到二进制数据,因此在Node.js中,定义一个buffer类,该类用来创建一个专门存放二进制数据缓存区

    buffer有一个八位字节一个字节元素组成的数组,单位用16进制表示,取值范围0-255

    创建buffer对象

    //创建方式1  随机创建1个buffer
    var buffer = new Buffer(10);
    console.log(buffer);
    //更改buffer,参数1 更改的数  参数2:从什么位置更该,参数3,更改到什么位置
    buffer.fill(255,2);
    console.log(buffer);
    buffer.fill(255,2,4);
    console.log(buffer);
    
    //创建方式2   通过字符串创建
    var buffer = new Buffer("大家好");
    console.log(buffer);
    //toString() 将buffer格式转化为中文
    console.log(buffer.toString());
    
    //通过数组创建buffer
    var buffer = new Buffer([0xe5,0xa4,0xa7,0xe5,0xae,0xb6,0xe5,0xa5,0xbd]);
    //打印出来的buffer 会自动将0x 去掉
    console.log(buffer);
    console.log(buffer.toString());
    

    path

    normalize:规范化字符串路径

    var path = require("path");
    // ./ 是同级   ../ 是上一级
    //index.php 前面有一个 ../ 会网上跳一级,所以跳过test1直接到test
    var urlPath = "././////test/test1/../index.php";
    var newPath = path.normalize(urlPath);
    console.log(newPath);
    

    join 将多个参数值字符串结合成一个路径字符串

    var newPath1 = path.join(__dirname,"test","test1/mycode","index.php");
    console.log(newPath1);
    

    resolve:把参数解析为一个绝对路径

    • 1.以应用程序的根目录为起点,根据参数的值解析出一个绝对路径

      1. .当前目录 ..上级目录
      1. 普通字符串代表下一级目录
      1. 如果没有下一个参数,返回当前路径
      1. /代表盘符的根目录
    var urlPath1 = "test/test1/test.php";
    var newPath2 = path.resolve(urlPath1);
    console.log(newPath2);
    

    http

    http:超文本传输协议,是互联网使用最广的一个协议.HTTP模块主要用于搭建HTTP服务器和客户端,使用HTTP服务器或客户端功能必须带哦用HTTP模块

    var http = require(“http”);var url = require(“url”);//创建服务器//http继承自tcpvar server = http.createServer(function (req,res) {    var urlstr = req.url;//获取请求的路径    var urlMethod = req.method;//获取请求的方法   //console.log(urlMethod);    
    res.end(“hello”);});
    server.listen(8080);
    

    HTTP模拟客户端

    //nodejs的服务端
    var http = require("http");
    var server = http.createServer(function (req,res) {
        var str = "";
        req.on("data",function (chunk) {
            str += chunk;
        })
        req.on("end",function () {
            console.log(str);
        })
        var obj = {
            name:"dr",
            age:19
        }
        res.write(JSON.stringify(obj));
        res.end();
    })
    server.listen(8989);
    
    //通过nodejs模拟客户端   客户端请求服务端
    var http = require("http");
    var options = {
        method:"post",
        host:"localhost",
        port:8989,
        path:"/"
    };
    /** request :发请求
    * http.request() 返回一个 http.ClientRequest类的实例。
    * ClientRequest实例是一个可写流对象。
    * 如果需要用POST请求上传一个文件的话,
    * 就将其写入到ClientRequest对象
    **/
    var request = http.request(options,function (res) {
        var str = "";
        res.on("data",function (chunk) {
            str += chunk;
        })
        res.on("end",function () {
            console.log(str);
        })
    })
    var  obj = {
        name:"RR",
        age:188
    }
    request.write(JSON.stringify(obj));
    request.end();
    

    相关文章

      网友评论

          本文标题:nodejs(上)

          本文链接:https://www.haomeiwen.com/subject/cehpaxtx.html