###常用工具Utilities
- console
Node提供一个全局对象'console',你可以使用它输出字符串。
1. `console.log`
输出字符串或者对象,输出对象时调用了util.inspect
2. `console.warn`
3. `console.trace`
- util
Node有一个'util'模块,它有如下的一些功能:
var util = require('util';
util.log('hello');
这条命令输出当前时间戳和指定的字符串
"inspect"函数是一个很好用的工具,它可以检查和打印一个对象的属性,用以快速排除问题。用法:
util.inspect(object, showHidden, depth=2, showColors);
第二个参数“showHidden",可用于显示对象的非可枚举属性。第三个参数"depth",表示最大递归层数,通常用来检查大型对象,默认是递归2层,指定null值表示不限递归层数完整遍历对象。
util还有一些其他模块,比如继承等。
###Buffers
用于处理二进制数据,这是mode标准方式传输数据。 通常情况下,你可以向每一个可接收数据Node API传输Buffer。 在回调函数中接收数据,也可以接收Buffer(除非特别指明数据流的编码)
将一个UTF-8字符串创建为Buffer: var buf = new Buffer('Hello World')
将一个其他编码的字符串创建为Buffer: var buf = new Buffer('45fd58f2','base64')
可接受的编码有:"ascii"、"utf8"和"base64"。
创建一个指定长度的空Buffer: var buf = new Buffer(1024)
然后这样操作它: buf[20]=56; //set byte 20 to 56 或者输出为一个空的utf-8字符串: var str = buf.toString(); 或者输出为其它编码的字符串: var str = buf.toString('base64')
utf-8是node默认的编码
-
分割Buffer
一个buffer可以被分割为一个更小的buffer:
var buffer = new Buffer('this is the string in my buffer'); var slice = buffer.slice(10,20);
slice函数并不创建新的buffer内存,它使用的是原有的buffer。
-
复制Buffer
复制一个buffer的一部分至另外一个buffer:
var buffer = new Buffer('this is the string in my buffer'); var slice = new Buffer(10); var targetStart = 0; var sourceStart = 10; var sourceEnd = 20; buffer.copy(slice, targetStart, sourceStart, sourceEnd);
###事件发射器
-
.addListener
监听事件,等价于"on"方法
var fs = require('fs'); var readStream = fs.createReadStream('/etc/passwd'); readStream.on('data',function(data){ console.log(data); }); readStream.on('end',function(){ console.log('file end'); });
-
.once
一次性的监听一个事件
-
.removeListener
移除一个事件的监听函数
-
.removeAllListeners
移除一个事件的所有监听函数
-
创建一个事件发射器
var EventEmitter = require('events').EventEmitter;
var util = require('util'); //Here is MyClass contructor var MyClass = function(option1, option2){ this.option1 = option1; this.option2 = option2; } util.inherits(MyClass, EventEmitter);
util.inherits是一个实现对象间原型继承的函数,因此你的MyClass实例就可以继承事件发射器的原型方法。 这样,MyClass实例可以发射事件:
MyClass.prototype.someMethod = function(){
this.emit('custom event','some arguments');
}
如下,可以监听这个叫做'custom event'的事件了: var myInstance = new MyClass(1,2); myInstance.on('custom event',function(){ console.log('got a custom event'); });
提示:事件发射器是促进接口解耦的一个好方法,它是一种提高各个接口的独立性的软件设计技术,帮助你更加灵活的编写代码。