8.C/C++扩展
C/C++运行效率要比js高些吧, 在一些运算密集的模块, 如果能编译成二进制模块, 能提高运行效率.
这段先跳过去, 稍后详细研究.
9.process
process是一个全局对象, 是EventEmitter的一个实例.
Event: exit
线程退出的时候触发的事件
收到此事件后会马上退出, 在回调函数中再添加回调函数是不会执行的, 见文档中示例代码.
Event:uncaughtExecption
对此事件侦听后, 默认的显示stack并退出的动作将不再执行.
侦听后, 发生Exception之后的代码不会得到执行, 但不影响已经添加的回调函数的执行.添加了侦听之后, 会有最后一次记录异常的机会, 或许有助于发现问题.
这个不影响回调函数的设计似乎很奇怪啊, 想不清楚有什么好处.见示例代码.
Signal Event:信号事件
这个讲的是一些信号事件, 木有学过系统编程, 不懂这个. Ctrl+C会触发SIGINT
http://en.wikipedia.org/wiki/C_signal_handling 参见这个. 似乎和这个讲的是同一个东西.
process.stdout, stderr
关于block那块不明白.
process.stdin
stdin默认是暂停的状态, 所以需要调用process.stdin.resume()来启用输入.
可以在stdin监听data , end 事件. data对应收到新的输入时, end对应输入结束时.比如Ctrl+D时, 输入会结束.
process.argv
数组, 参数, 第一个值是node, 第二个是js文件路径, 后面就是依次的参数了
process.execPath
启动该进程的node的路径
process.cwd process.chdir
cwd返回当前工作目录, chdir则用来改变当前工作目录
process.env
当前终端传回的一些变量, 让see enviorn(7), 不过连个链接也木有, 也不知道该到哪里去see. 再向后看看再说.
process.exit([code])
默认返回0, 并中断脚本执行
process.getgid setgid
设置和获取groupid用的
process.getuid setuid
设置和获取user identity的, 没有明白说什么设置为用户名时, 会block什么意思.
process.version versions
输出node的版本或者组件的版本,
process.installPrefix
我的这个输出值为undefined.
process.kill(pid, [signal])
又是信号, 不懂.
这个函数虽然叫做kill, 但他其实只是发送了一个信号,
process.pid, title, arch, platform
pid就是PID, titile 用于ps命令显示, arch表明系统架构, arm/ia32/x64, platform 平台
process.memoryUsage()
内存使用量. heapTotal, heapUsed是指v8虚拟机的使用量
process.nextTick(callback)
不懂要这个东西做什么用的, 说是比setTimeout(fn, 0)更有效率, 不知道该如何理解, 也不清楚其使用场景.
process.umask([mask])
mask的这个概念也不是很懂, 似乎是和权限相关的, 但是一个进程的权限? 似乎有点难以理解.
process.uptime()
获取当前执行时间, 秒计算. 不足一秒似乎是四舍五入了.
10.Utilities实用程序, 模块util
稳定度:5级
util.format()
会被解析的模式, %s字符串, %d数字, %j JSON,
%% 输出一个%, 或许可以理解成转义字符,
如果输入的参数多于占位符, 那么多余的字符会被用空格连接起来并且输出
util.debug(string)
会直接输出到stderr
util.log(string)
会输出一个时间和string到stdout
util.inspect(object, [showHidden], [depth], [colors])
返回一个字符串表示的对象, 调试的时候很有用
util.isArray
判断是否是字符串
util.isRegExp
判断是否是正则表达式
util.isDate(object)
需要注意的是, new Date()返回的是对象, isDate会返回true, Date()返回的则是字符串了, isDate就会返回false了
util.isError
如果是Error对象返回true
util.pump(readableStream, writableStream, [callback])
这个似乎是实验性质的函数
将一个读取一个readableStream, 并转发到writableStream.
util.inherits(contructor, superConstructor)
一个类从另一个类继承