12-《Node.js开发指南》-核心模块

全局对象

Node.js中的全局对象是global
所有全局变量(除了global本身以外)都是global对象的属性
最根本的作用为全局变量的宿主

全局变量

//满足以下条件的是全局变量
a.在最外层定义的变量
b.全局对象的属性
c.隐式定义的变量(未定义直接赋值的变量)

process

用于描述当前Node.js进程状态的对象,提供了一个与操作系统的简单接口

process.argv

process.argv是命令行参数数组,第一个元素是node,第二个元素是脚本文件名,从第三个元素开始每个元素是一个运行参数;
process.argv.forEach((val, index) => {
    console.log(`${index}: ${val}`);
  })
//命令行执行 node process-args.js one two=three four
//命令行输出 
0: /usr/local/bin/node
1: /Users/mjr/work/node/process-args.js
2: one
3: two=three
4: four

process.stdout

process.stdout是标准输出流,通常我们使用console.log()向标准输出打印字符,而process.stdout.write()函数提供了更底层的接口

process.stdin

process.stdin是标准输入流,初始时它是被暂停的,要向从标准输入读取数据,你必须恢复流,并手动编写流的事件响应函数
process.stdin.resume();
process.stdin.on('data',function(data){
    process.stdout.write('read from console:'+data.toString());
})

process.nextTick(callback)

//process.nextTick(callback)的功能是为事件循环设置一项任务,Node.js会在下次事件循环调响应时调用callback
//Node.js适合I/O密集型的应用,而不是计算密集型的应用,因为一个Node.js进程只有一个线程,因此在任何时刻都
//只有一个事件在执行,如果这个事件占用大量的CPU时间,执行事件循环中的下一个事件就需要等待很久,因此Node.js
//的一个编程原则就是尽量缩短每个事件的执行时间。process.nextTick(callback)提供了一个这样的工具,可以把复杂
//的工作拆散,变成一个个较小的事件;
function doSomething(args,callback){
    somethingComplicated(args);
    callback();
}
doSomething(function onEnd(){
    compute();
})
//假设compute()和somethingComplicated()是两个较为耗时的函数,以上的程序在调用doSomething()时会先执行 
somethingComplicated(),然后立即调用回调函数,在onEnd()中又会执行compute()
改写
function doSomething(args,callback){
    somethingComplicated(args);
    process.nextTick(callback);
}
doSomething(function onEnd(){
    compute();
 })
//改写后的程序会把上面耗时的操作拆分为两个事件,减少每个事件的执行时间,提高事件响应速度

常用工具util

util是一个Node.js核心模块,提供常用函数的集合,用于弥补核心javascript的功能过于精简的不足

util.inherits

//util.inherits(constructor,superconstructor)是一个实现对象间原型继承的函数。
//javascript的面向对象特性是基于原型的,与常见的基于类的不同。
//javascript没有提供对象继承的语言级别特性,而是通过原型复制来实现的。

事件机制

文件系统访问

HTTP服务器与客户端

猜你喜欢

转载自www.cnblogs.com/foreverLuckyStar/p/12076899.html