Node.js文档学习笔记(2)
发布于 8 年前 作者 young40 4726 次浏览 最后一次编辑是 3 年前

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)
一个类从另一个类继承
5 回复

赞。

process.nextTick(callback) 不懂要这个东西做什么用的, 说是比setTimeout(fn, 0)更有效率, 不知道该如何理解, 也不清楚其使用场景.

这个跟Node的事件循环有关。将任务放到下一个循环执行。

有没有使用场景的例子? 呵呵, 谢谢@Jackson

@young40 密集运算的时候

@olddog 看文档的时候, 光顾着跑快赶紧看完了, 细节也没有追究. 看到这里似乎是个三哥的文章, 我研究下, 有价值的话, 我翻译下贴过来.

http://howtonode.org/understanding-process-next-tick

@young40 不错不错,蛮值得翻译的一篇文章

回到顶部