在Node.js中我們可以直接訪問到全局對象。
這些對象在所有模塊里都是可用的,有些對象不是在全局作用域而是在模塊作用域里,這些情況將在本文的內容中進行介紹。
global
- {Object} 全局命名空間對象。
在瀏覽器中,全局作用域就是頂級域。如果在全局域內定義變量var something
將會是全局變量。而在Node中,頂級域并不是全局域;在模塊里定義變量?var something
只是模塊內可用。
process
- {Object}
進程對象。
console
- {Object}
用來打印stdout和stderr。
Class: Buffer
- {Function}
用來處理二進制數據。
require()
- {Function}
引入模塊。。require
實際上并非全局的,而是各個本地模塊有效。
require.resolve()
使用內部require()
機制來查找module位置,但是不加載模塊,只是返回解析過的文件名。
require.cache
- {Object}
引入模塊時會緩存到這個對象。通過刪除該對象鍵值,下次調用require
將會重載該模塊。
require.extensions
穩定性: 0 - 拋棄
- {Object}
指導require
如何處理特定的文件擴展名。
將.sjs
文件當作.js
文件處理:
require.extensions['.sjs'] = require.extensions['.js'];
拋棄?以前這個列表用來加載按需編譯的非JavaScript模塊到node。實際上,有更好的辦法來解決這個問題,比如通過其他node程序來加載模塊,或者提前編譯成 JavaScript。
由于模塊系統已經鎖定,該功能可能永遠不會去掉。改動它可能會產生bug,所以最好不要動它。
__filename
- {String}
被執行的代碼的文件名是相對路徑。對于主程序來說,這和命令行里未必用同一個文件名。模塊里的值是模塊文件的路徑。
列如,運行/Users/mjr
里的node example.js
:
console.log(__filename);
// /Users/mjr/example.js
__filename
不是全局的,而是模塊本地的。
__dirname
- {String}
執行的script代碼所在的文件夾的名字。
列如,運行/Users/mjr
里的node example.js
:
console.log(__dirname);
// /Users/mjr
__dirname
不是全局的,而是模塊本地的。
module
- {Object}
當前模塊的引用。通過require()
,module.exports
定義了哪個模塊輸出可用。
module
不是全局的,而是模塊本地的。
exports
module.exports
的引用。
module
不是全局的,而是模塊本地的。
setTimeout(cb, ms)
最少在ms
毫秒后調回調函數。實際的延遲依賴于外部因素,比如操作系統的粒度和負載。
timeout值有效范圍為1-2,147,483,647。如果超過該范圍,將會變為1毫秒。通常,定時器不應該超過24.8天。
返回一個代表定時器的句柄值。
clearTimeout(t)
停止一個之前通過setTimeout()
創建的定時器。不會再被執行回調。
setInterval(cb, ms)
每隔ms
毫秒調用回調函數cb
。實際的間隔依賴于外部因素,比如操作系統的粒度和系統負載。通常會大于ms
。
間隔值的有效范圍在1-2,147,483,647。如果超過該范圍,將會變為1毫秒。通常,定時器不應該超過24.8天。
返回一個代表該定時器的句柄值。
clearInterval(t)
停止一個之前通過setInterval()
創建的定時器。不會再被執行回調。