剛接觸Node.js
環境,實用的語言仍是JavaScript
因此語法不用多說、主要關心的是Node.js
環境跟瀏覽器中的JavaScript
環境的區別。node
雖然這個在瀏覽器的js環境中也常常用,但再node中更常見。程序的調試信息和日誌都用它來輸出。web
###console.log()json
打印日誌到標準輸出流(stdout)並換行數組
console.log('This is Log!');
This is Log!瀏覽器
還能夠把程序中的變量格式化輸出, 支持%s
、%d
、%j
等佔位符, 分別輸出字符串、數字、json對象。webstorm
var name = 'UgCode'; var old = 18; console.log('My name is %s', name); console.log('I am %d', old);
My name is UgCode I am 18函數
###console.info()編碼
其實這跟console.log
是同樣同樣滴!操作系統
###console.error()命令行
這個也跟console.log
很像,不過它輸出到標準錯誤流(stderr). 當把輸出流重定向到日誌文件的時候,這些錯誤是不會寫入文件的。
console.log('This is Log!'); console.error('This is Error!');
node console.js 1>log.txt
打開log.txt文件發現只有This is Log!
。 這裏數字1表明的就是標準輸出流, 若是改爲2就是把錯誤流寫到文件中。
###console.warn() 同理, 跟console.error
同樣。
###console.time()/console.timeEnd()
這兩個方法是一對, 用來計算代碼執行的時間的。
console.time
啓動一個計時器,給個字符串參數用來標識這個計時器, 當代碼結束時用console.timeEnd
來打印這段代碼執行了多長時間。
console.time('time'); var j = 0; for (var i=0; i < 1000000; i++) { j += i; } console.timeEnd('time'); console.log('j = ' + j);
time: 62ms j = 499999500000
幾個經常使用的全局變量
###__dirname 該變量是當前運行的js文件所在目錄的絕對路徑
console.log(__dirname);
/Users/UgCode/webstormprojects/TestNodeJS
###__filename 該變量是當前運行的js文件的絕對路徑
console.log(__filename);
/Users/UgCode/webstormprojects/TestNodeJS/process.js
###process.stdout 輸出標準輸出流:
process.stdout.write('This is Stdout');
This is Stdout
###process.stderr 標準錯誤流:
process.stderr.write('This is Stderr');
This is Stderr
其實console.log也是調用這個方法來輸出的:
console.log = function(d) { process.stdout.write(d + '\n'); };
###process.stdin.on() 使用process.stdin.on
能夠接受用戶鍵盤輸入。 在以前要先設置它的編碼格式:
process.stdin.setEncoding('utf-8');
process.stdin.on
方法能夠註冊一些回調函數來接受用戶的鍵盤輸入:
process.stdin.setEncoding('utf-8'); //data函數能夠返回用戶輸入的內容 process.stdin.on('data', function(data){ console.log(data); });
命令行運行文件之後能夠發現程序暫停並等待用戶輸入,輸入內容回車之後會輸出你剛纔輸入的內容。control+c來退出程序。
//readable函數沒有參數, 要用stdin手動讀取用戶輸入 process.stdin.on('readable', function(){ var data = process.stdin.read(); console.log(data); });
命令行運行結果跟上面差很少。
###process.cwd() 輸出當前命令行所在位置的路徑:
console.log(process.cwd());
###process.on() process.on
經過註冊回調函數,能夠響應操做系統的一些事件。
程序正常退出時回調exit
函數:
process.on('exit', function(){ console.log('程序關閉!'); });
程序收到中斷命令時回調SIGINT
:
process.on('SIGINT', function(){ console.log('程序被終止'); //退出程序 process.exit(); });
###process.argv 這個你們應該不陌生,是程序啓動時輸入的參數。 process.argv
是一個數組。 第一個參數是執行使用的命令,Node.js
環境中就是node
, 第二課參數是執行文件的路徑, 後面是輸入的參數。 好比:
console.log(process.argv);
運行該文件並輸入一些參數
$ node argv.js 參數1 參數2 參數3 參數n
輸出結果
argv:["node","/Users/UgCode/webstormprojects/TestNodeJS/argv.js","參數1","參數2","參數3","參數n"]