zoukankan      html  css  js  c++  java
  • NodeJS学习三之API

    Node采用V8引擎处理JavaScript脚本,最大特点就是单线程运行,一次只能运行一个任务。这导致Node大量采用异步操作(asynchronous opertion),即任务不是马上执行,而是插在任务队列的尾部,等到前面的任务运行完后再执行。由于这种特性,某一个任务的后续操作,往往采用回调函数(callback)的形式进行定义。so也不适用于try catch捕获错误,约定回调函数的第一个参数为为error对象。

    • Node约定,如果某个函数需要回调函数作为参数,则回调函数是最后一个参数。另外,回调函数本身的第一个参数,约定为上一步传入的错误对象。

    Buffer

    V8引擎将Buffer对象占用的内存,解释为一个整数数组,而不是二进制数组。所以,new Uint32Array(new Buffer([1, 2, 3, 4])),生成的Uint32Array数组是一个4个成员的Uint32Array数组,而不是只有单个成员([0x1020304]或者[0x4030201])。

    注意,这时二进制数组所对应的内存是从Buffer对象拷贝的,而不是共享的。二进制数组的buffer属性,保留指向原Buffer对象的指针。

    二进制数组的操作,与Buffer对象的操作基本上是兼容的,只有轻微的差异。比如,二进制数组的slice方法返回原内存的拷贝,而Buffer对象的slice方法创造原内存的一个视图(view)。即返回的新 buffer,是对原 buffer 某区段的引用,或者说新 buffer 是指针,它指向原 buffer 的某区段

    Child Process

    child_process模块用于新建子进程。子进程的运行结果储存在系统缓存之中(最大200KB),等到子进程运行结束以后,主进程再用回调函数读取子进程的运行结果。

    child_process.exec(command, [options], callback)
    child_process.spawn(command, [args], [options])

    cluster

    cluster模块允许设立一个主进程和若干个worker进程,由主进程监控和协调worker进程的运行。worker之间采用进程间通信交换消息,cluster模块内置一个负载均衡器,采用Round-robin算法协调各个worker进程之间的负载。运行时,所有新建立的链接都由主进程完成,然后主进程再把TCP连接分配给指定的worker进程

    Events

    Events模块的作用,还在于其他模块可以部署EventEmitter接口,从而也能够订阅和发布消息。

    var  eventEmitter = require('events').EventEmitter;
    
    function Dog(name) {
        this.name = name;
    }
    
    Dog.prototype = Object.create(eventEmitter.prototype);
    
    var simon = new Dog('simon');
    
    simon.on('bark', function() {
        console.log(this.name + ' barked');
    });
    
    setInterval(function() {
        simon.emit('bark');
    },500);

    上面代码新建了一个构造函数Dog,然后让其继承EventEmitter,因此Dog就拥有了EventEmitter的接口。最后,为Dog的实例指定bark事件的监听函数,再使用EventEmitter的emit方法,触发bark事件。
    Node内置模块util的inherits方法,提供了另一种继承EventEmitter的写法。

    事件类型
    Events模块默认支持两个事件。
    newListener事件:添加新的回调函数时触发。
    removeListener事件:移除回调时触发。

    参考
    nodejs官网:https://nodejs.org/dist/latest-v4.x/docs/api/querystring.html
    阮一峰Nojs.API中文版:http://javascript.ruanyifeng.com/nodejs/

  • 相关阅读:
    【noip2012】开车旅行
    【AC自动机】专题总结
    【noi2013】【bz3244】树的计数
    BZOJ1069: [SCOI2007]最大土地面积
    BZOJ1185: [HNOI2007]最小矩形覆盖
    BZOJ1047: [HAOI2007]理想的正方形
    BZOJ1801: [Ahoi2009]chess 中国象棋
    BZOJ1925: [Sdoi2010]地精部落
    BZOJ1057: [ZJOI2007]棋盘制作
    BZOJ1217: [HNOI2003]消防局的设立
  • 原文地址:https://www.cnblogs.com/wkyseo/p/5880881.html
Copyright © 2011-2022 走看看