施小喵

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Node.js核心模块主要内容包括:(1)全局对象 (2)常用工具 (3)事件机制 (4)文件系统访问 (5)HTTP服务器与客户端

一: 全局对象

Node.js中的全局对象是global,所有的全局变量(除了global本身以外)都是global的属性。

global 最根本的作用是作为全局变量的宿主。

全局变量的条件:

(1)在最外层定义的变量;

(2)全局对象的属性;

(3)隐式定义的变量(未定义直接赋值的变量(strict模式下不可以))

在Node.js中不可能在最外层定义变量,因为所有用户代码都是属于当前模块的,而模块本身不是最外层上下文。

一.1 process

process是一个全局变量,即global对象的属性,它用于描述当前Node.js进程状态的对象,提供了一个与操作系统的简单接口。

(1)process.argv是命令行参数数组,第一个元素是node,第二个元素是脚本文件名,从第三个元素开始每个元素是一个运行参数。

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

(3)process.stdin是标准输入流,初始时它是被暂停的,要想从标准输入读取数据,必须恢复流,并手动编写流的事件响应函数。

process.stdin.resume();

process.stdin.on('data',function(data) {

  process.stdout.write('read from console: ' + data.toString() );

});

(4)process.nextTick(callback)的功能是为事件循环设置一项任务,Node.js会在下次事件循环调响应时调用callback。

注:不要使用setTimeout(fn,0)代替process.nextTick(callback),前者比后者效率要低得多。

process的API参考: http://nodejs.org/api/process.html

一.2 console  (所谓的各种流:跟操作系统的设置有关,有时候操作系统会把程序的错误输出和正常输出放到不同的地方,比如不同的日志文件,不同的终端设备

console用于提供控制台标准输出,用于向标准输出流(stdout)或标准错误流(stderr)输出字符。

 (1)console.log接受若干个参数,如果只有一个参数,则输出这个参数的字符串形式;如果有多个参数,则以类似于C语言的printf()命令的格式输出。

 (2)console.error():与console.log用法一致,只是向标准错误流输出。

 (3)console.trace(): 向标准错误流输出当前的调用栈。

 

二:常用工具util

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

二.1 util.inherits

util.inherits(constructor:构造函数, superConstructor:父级的构造函数)是一个实现对象间原型继承的函数。JavaScript的面向对象是基于原型的。

util.inherits方法相当于原生js中的组合继承。子级只能继承父级在原型中定义的函数,构造函数中的属性都是私有的,不被继承。

二.2 util.inspect

util.inspect(object, [showHidden] , [depth], [colors])是一个将任意对象转换为字符串的方法,通常用于调试和错误输出。至少接受一个参数,object。

showHidden : 可选参数,如果为true,则会输出更多隐藏信息。默认为false.

depth : 最大递归层数,如果对象很复杂,可以指定层数以控制输出信息的多少,默认为2层,设为null,则表示不限递归层数完整遍历对象。

color :若为true,则输出格式将会以ANSI颜色编码,通常用于在终端显示更漂亮的效果。默认为false,显示普通颜色。

customInspect : 如果为false,则inspect(depth,opt)不会被执行,默认为true。

注: util.inspect并不会简单地直接把对象转换为字符串,即使该对象定义了toString方法也不会调用。

 

posted on 2015-11-14 20:47  施小喵  阅读(910)  评论(0编辑  收藏  举报