1. 程式人生 > >nj08---process、console

nj08---process、console

有用 系統 條件 ava 任務 .exe win for memory

概念:所有屬性都可以在程序的任何地方訪問,即全局變量。在JavaScript中,通常window是全局對象,而Node.js的全局對象是global,所有全局變量都是global對象的屬性,如:console、process等。

一、全局對象與全局變量
global最根本的作用是作為全局變量的宿主。滿足以下條件成為全局變量:
1.在最外層定義的變量
2.全局對象的屬性
3.隱式定義的變量(未定義直接賦值的變量)
在Node.js中不可能在最外層定義變量,因為所有用戶代碼都是屬於當前模塊的,而模塊本身不是最外層上下文。

二、process
它用於描述當前Node.js進程狀態的對象。提供了一個與操作系統的簡單接口,通常寫本地命令行程序的時候,會用到它。
1.process.argv是命令行參數數組,第一個元素是node,第二個元素是腳本文件名,第三個元素開始每個元素是一個運行參數。console.log(process.argv); /*node argv.js ‘11‘ ‘22‘ 33 oo 輸出:node.exe argv.js ‘11‘ ‘22‘ 33 ‘oo‘*/ 2.process.stdout是標準輸出流,進入node環境,通常我們使用的console.log() 其底層是用 process.stdout.write();實現。 3.prcess.stdin是標準輸入流,初始時它是被暫停的。要想從標準輸入流讀取數據,必須恢復流,並手動編寫流的事件相應函數。//
恢復流 process.stdin.resume(); process.stdin.on(‘data‘,function(data){ process.stdout.write(‘read from console‘+data.toString()); }) //node stdin.js 然後輸入,可以一直輸入 4.process.nextTick(callback)的功能是為事件循環設置一項任務。Node.js會在下次事件循環調響應時調用callback Node.js適合IO密集型的應用,而不是計算密集型的應用。process.nextTick()提供了一個這樣工具,可以把復雜的工作拆散,成較小的事件去執行。
function doSomething(args,callback){ somethingComplited(args); callback(); } doSomething(‘12345‘,function onEnd(){ compute(); }) 如果假設compute()和somethingComplited()是兩個較為耗時的函數。以上的程序在調用doSomething時會先執行somethingComplited(args),然後立即調用回調函數,在onEnd()中又會執行compute(),改寫為: function doSomething(args,callback){ somethingComplited(args); process.nextTick(callback); } 使用process.nextTick()後,改寫後的程序會把上面耗時的操作拆分為兩個事件,減少每個事件的執行時間,提高事件相應速度。function compute(){ console.log("I am is cpmpute method"); } function somethingComplited(args){ console.log("I am is somethingComplited method"); console.log(args); } //function doSomething(args,callback){ // somethingComplited(args); // callback(); //} function doSomething(args,callback){ somethingComplited(args); process.nextTick(callback);//這個方法是異步執行 } doSomething(‘12345‘,function onEnd(){ compute(); }) 5.process其他方法:process.platform()、process.pid()、process.execPath()、process.memoryUsage()等方法。。。 API鏈接:http://nodejs.org/api/process.html 二、console java中的log4j的 Logger logger=new Logger(Object.class); logger.info logger.error logger.debug 用於提供控制臺標準輸出,Node.js沿用了這個標準,提供與習慣行為一直的console對象。 1.console.log().向標準輸出流打印字符並以換行符結束。 使用案例: console.log("hello"); console.log("hello%marico"); console.log("hello%marico"," Mr. "); 2.console.error();用法與console.log()相同,只是向標準錯誤流輸出。 3.console. trace();向標準錯誤六輸出當前的調用棧 console.log("hello"); console.log(‘hello%marico‘); console.log(‘hello%marico‘,1991,‘yfc‘); console.error(‘error!‘); console.trace(‘this is a error‘); /* hello hello%marico hello%marico 1991 */

nj08---process、console