NodeJS学习三之API
来源:互联网 发布:校园寝室网络设计方案 编辑:程序博客网 时间:2024/05/17 22:56
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/
- NodeJS学习三之API
- nodejs API之URL
- nodejs API之QueryString
- nodejs API之HTTP
- nodejs学习三
- nodejs API 之典型概念
- nodejs的API之URL
- nodejs 之 通读cheerio API
- Nodejs学习笔记(三)
- Nodejs(学习之HelloWorld)
- nodejs学习之路
- 前端之nodejs(三)
- nodejs 自动化生成api学习日志
- 关于Nodejs学习的API地址汇总
- nodejs--promise之bluebird部分API
- nodejs之cheerio中文API 说明
- windows API 菜鸟学习之路(三)
- Android官方API Guide学习之三 系统权限
- android程序中的AndroidManifest.xml中的uses-feature详解
- spirngMVC如何在项目中打印异常日志+springmvc事务控制详解
- iOS dispatch_time_t
- MAC 下使用 Sublime Text 3 添加Perl编译支持
- java中的CountDownLatch
- NodeJS学习三之API
- 300. Longest Increasing Subsequence(C++实现)
- 国标28181sip开源库介绍(陆续补充完备)
- MySQL日期查询:本周、本月、本季、本年
- HDU 4405 Aeroplane chess
- STL中的set与multiset
- 1.1 Python简介
- The JSP specification requires that an attribute name is preceded by whitespace
- hdu 3065 病毒侵袭持续中