2 node 核心
1 全局变量 - process
process 是一个全局变量,即 global 对象的属性。
它用于描述当前 Node.js 进程状态的对象,提供了一个与操作系统的简单接口。
通常在你写本地命令行程序的时候,少不了要和它打交道。
常用的有:
process.argv是命令行参数数组。
console.log(process.argv);
将以上代码存储为 argv.js,通过以下命令运行:
process.stdin是标准输入流,初始时它是被暂停的,要想从标准输入读取数据,你必须恢复流,并手动编写流的事件响应函数。
process.stdin.resume(); process.stdin.on('data', function(data) { process.stdout.write('read from console: ' + data.toString()); });
2 常用工具 util
util 是一个 Node.js 核心模块,提供常用函数的集合,用于弥补核心 JavaScript 的功能过于精简的不足。
我们知道,JS中的继承是通过将父类的实例赋值给子类来实现的。
在Node.js中,util.inherits(constructor, superConstructor)是一个实现对象间原型继承的函数。
直接看代码吧:
var util = require('util'); function Base() { this.name = 'base'; this.base = 1991; this.sayHello = function() { console.log('Hello ' + this.name); }; } Base.prototype.showName = function() { console.log(this.name); }; function Sub() { this.name = 'sub'; } //通过该函数实现继承,不需要关注内部细节,大大方便了编程 util.inherits(Sub, Base); var objBase = new Base(); objBase.showName(); objBase.sayHello(); console.log(objBase); var objSub = new Sub(); objSub.showName(); //objSub.sayHello(); console.log(objSub);
注意, Sub 仅仅继承了 Base 在原型中定义的函数,而构造函数内部创造的 base 属性和 sayHello 函数都没有被 Sub 继承。
同时,在原型中定义的属性不会被 console.log 作为对象的属性输出。如果我们去掉 objSub.sayHello(); 这行的注释,将会看到:
3 事件驱动 events
events 是 Node.js 最重要的模块,没有“之一”,原因是 Node.js 本身架构就是事件式的,而它提供了唯一的接口,所以堪称 Node.js 事件编程的基石。
events 模块只提供了一个对象: events.EventEmitter。 EventEmitter 的核心就是事件发射与事件监听器功能的封装。