Page 67 - Node.js开发指南
P. 67

4.1  全局对象    59


               和它打交道。下面将会介绍 process 对象的一些最常用的成员方法。                                                    1
                     process.argv是命令行参数数组,第一个元素是 node,第二个元素是脚本文件名,
                      从第三个元素开始每个元素是一个运行参数。

                      console.log(process.argv);
                                                                                                      2
                      将以上代码存储为 argv.js,通过以下命令运行:

                      $ node argv.js 1991 name=byvoid --v "Carbo Kuo"
                      [ 'node',
                        '/home/byvoid/argv.js',                                                       3
                        '1991',
                        'name=byvoid',
                        '--v',
                        'Carbo Kuo' ]
                                                                                                      4
                     process.stdout是标准输出流,通常我们使用的 console.log() 向标准输出打印
                      字符,而 process.stdout.write() 函数提供了更底层的接口。
                     process.stdin是标准输入流,初始时它是被暂停的,要想从标准输入读取数据,
                      你必须恢复流,并手动编写流的事件响应函数。                                                           5

                      process.stdin.resume();

                      process.stdin.on('data', function(data) {
                        process.stdout.write('read from console: ' + data.toString());                6
                      });

                     process.nextTick(callback)的功能是为事件循环设置一项任务,Node.js  会在
                      下次事件循环调响应时调用 callback。
                   初学者很可能不理解这个函数的作用,有什么任务不能在当下执行完,需要交给下次事                                             7
               件循环响应来做呢?我们讨论过,Node.js 适合 I/O 密集型的应用,而不是计算密集型的应用,
               因为一个 Node.js 进程只有一个线程,因此在任何时刻都只有一个事件在执行。如果这个事
               件占用大量的 CPU 时间,执行事件循环中的下一个事件就需要等待很久,因此 Node.js 的一
                                                                                                      8
               个编程原则就是尽量缩短每个事件的执行时间。process.nextTick() 提供了一个这样的
               工具,可以把复杂的工作拆散,变成一个个较小的事件。


                   function doSomething(args, callback) {
                                                                                                      9
                     somethingComplicated(args);
                     callback();
                   }

                   doSomething(function onEnd() {
                                                                                                      10
                     compute();
                   });
   62   63   64   65   66   67   68   69   70   71   72