1.global
Node.js環(huán)境中唯一的全局對象:global
進入Node.js交互環(huán)境塑陵,可以直接輸入:
>global.console
Console {
?log: [Function: bound ],
?info: [Function: bound ],
?warn: [Function: bound ],
?error: [Function: bound ],
?dir: [Function: bound ],
?time: [Function: bound ],
?timeEnd: [Function: bound ],
?trace: [Function: bound trace],
?assert: [Function: bound ],
?Console: [Function: Console] }
2.process
Node.js提供的一個對象翁授,代表當前Node.js進程
一些基礎應用:
process.version;
process.platform;
process.arch;
process.cwd();//返回當前工作目錄
process.chdir('/private/tmp');// 切換當前工作目錄
下一次事件響應中執(zhí)行代碼均牢,可以調(diào)用process.nextTick()孽拷。不是立刻執(zhí)行偎球,而是要等到下一次事件循環(huán)瞳秽。
響應exit事件联予,就可以在程序即將退出時執(zhí)行某個回調(diào)函數(shù)
// 程序即將退出時的回調(diào)函數(shù):
process.on('exit', function (code) {
? ? ? console.log('about to exit with code: ' + code);
});
3.fs
Node.js內(nèi)置的fs模塊就是文件系統(tǒng)模塊啼县,負責讀寫文件。fs模塊同時提供了異步和同步的方法沸久。
異步讀文件:?fs.readFile()
'use strict';
var fs = require('fs');
?fs.readFile('sample.txt', 'utf-8', function (err, data) {
?????if (err) {
?????????console.log(err);
?????} else {
?????????console.log(data);
?????}
});
同步讀文件: fs.readFileSync()
'use strict';
var fs = require('fs');
?var data = fs.readFileSync('sample.txt', 'utf-8');
console.log(data);try {
?????var data = fs.readFileSync('sample.txt', 'utf-8');
?????console.log(data);
} catch (err) {
? ? console.log(err);? // 出錯了
}
參照:https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/001434501497361a4e77c055f5c4a8da2d5a1868df36ad1000
4.文件類型轉換
讀取二進制文件時季眷,不傳入文件編碼時,回調(diào)函數(shù)的data參數(shù)將返回一個Buffer對象卷胯。
在Node.js中子刮,Buffer對象就是一個包含零個或任意個字節(jié)的數(shù)組(注意和Array不同)
Buffer對象可以和String作轉換
Buffer對象轉換成String:
vartext = data.toString('utf-8')
String轉換成Buffer對象
varbuf = Buffer.from(text,'utf-8');
5.寫文件
異步寫入文件 fs.writeFile()
'use strict';
?var fs = require('fs');
?var data = 'Hello, Node.js';
fs.writeFile('output.txt', data, function (err) {
?????if (err) {
?????????console.log(err);
?????} else {
?????????console.log('ok.');
?????}
});
同步寫入文件?writeFileSync()
'use strict';
?var fs = require('fs');
?var data = 'Hello, Node.js';
fs.writeFileSync('output.txt', data);
6.文件狀態(tài)
獲取文件狀態(tài) fs.stat(),返回文件Stat對象
同步函數(shù)statSync()
7.同步異步窑睁?
????由于Node環(huán)境執(zhí)行的JavaScript代碼是服務器端代碼挺峡,所以葵孤,絕大部分需要在服務器運行期反復執(zhí)行業(yè)務邏輯的代碼,必須使用異步代碼沙郭,否則佛呻,同步代碼在執(zhí)行時期裳朋,服務器將停止響應病线,因為JavaScript只有一個執(zhí)行線程。
????服務器啟動時如果需要讀取配置文件鲤嫡,或者結束時需要寫入到狀態(tài)文件時送挑,可以使用同步代碼,因為這些代碼只在啟動和結束時執(zhí)行一次暖眼,不影響服務器正常運行時的異步執(zhí)行惕耕。