node學習02--常見的全域性物件
阿新 • • 發佈:2022-11-29
一、常見的全域性物件
1.全域性物件的定義
- 全域性物件(Global Object),它及其所有屬性都可以在程式的任何地方訪問,即全域性變數。
- 在瀏覽器JavaScript中,通常
window
是全域性物件 - 在Node.js中,全域性物件是
global
,所有的全域性物件都是global
物件的屬性。
控制檯列印的global
<ref *1> Object [global] { global: [Circular *1], clearInterval: [Function: clearInterval], clearTimeout: [Function: clearTimeout], setInterval: [Function: setInterval], setTimeout: [Function: setTimeout] { [Symbol(nodejs.util.promisify.custom)]: [Getter] }, queueMicrotask: [Function: queueMicrotask], performance: Performance { nodeTiming: PerformanceNodeTiming { name: 'node', entryType: 'node', startTime: 0, duration: 26.296499997377396, nodeStart: 0.5467000007629395, v8Start: 1.967500001192093, bootstrapComplete: 19.882200002670288, environment: 9.948199987411499, loopStart: -1, loopExit: -1, idleTime: 0 }, timeOrigin: 1669688619386.091 }, clearImmediate: [Function: clearImmediate], setImmediate: [Function: setImmediate] { [Symbol(nodejs.util.promisify.custom)]: [Getter] } }
2.特殊的全域性變數
-
__dirname
輸出當前目錄 -
__filename
輸出當前檔案的目錄,及檔名
exports
module
require()
這些全域性物件實際上模組中的變數,只是每個模組都有,看起來像是全域性變數。
在命令列互動中是不可以使用的。
-
setTimeout(cb, ms)
全域性函式在指定的毫秒(ms)數後執行指定函式(cb)。:setTimeout() 只執行一次指定函式。 -
clearTimeout(t)
全域性函式用於停止一個之前通過 setTimeout() 建立的定時器。 引數t
是通過 setTimeout() 函式建立的定時器。 -
setInterval(cb, ms)
-
console
:提供簡單的除錯控制檯,用於向標準輸出流(stdout)或標準錯誤流(stderr)輸出字元。 -
process
:process提供了Node程序中相關的資訊, 即 global 物件的屬性,用於描述當前Node.js 程序狀態的物件,提供了一個與作業系統的簡單介面。
二、模組化開發
1.CommonJS
CommonJS
是一個規範,簡稱為CJS
-
Node
是CommonJS
在伺服器端一個具有代表性的實現,Node
中對CommonJS
進行了支援和實現,讓我們在開發node的過程中可以方便的進行模組化開發 - 在
Node
中每一個js
檔案都是一個單獨的模組; - 這個模組中包括
CommonJS
規範的核心變數:exports
、module.exports
、require
- 我們可以使用這些變數來方便的進行模組化開發
模組化的核心是匯入和匯出
- exports和module.exports可以負責對模組中的內容進行匯出
- require函式可以幫助我們匯入其他模組(自定義模組、系統模組、第三方庫模組)中的內容
exports 和 module.exports 的使用
- 如果要對外暴露屬性或方法,就用 exports 就行,要暴露物件(類似class,包含了很多屬性和方法),就用 module.exports。
- 不建議同時使用 exports 和 module.exports。
- 如果先使用 exports 對外暴露屬性或方法,再使用 module.exports 暴露物件,會使得 exports 上暴露的屬性或者方法失效。
三、require細節
1.require('X')的查詢規範
情況一 像http fs這種內建模組,直接返回核心模組
情況二 X是以./或../開頭的。
-
如果有後綴名,按照字尾名的格式查詢對應的檔案;
-
如果沒有後綴名,
- 直接查詢檔案X
- 查詢X.js檔案
- 查詢X.json檔案
- 查詢X.node檔案
-
如果滅找到對應的檔案,將X作為一個目錄
查詢目錄下的index檔案
- 查詢X/index.js檔案
- 查詢X/index.json檔案
- 查詢X/index.node檔案
情況三 在node_moudles資料夾中查詢
四、exports匯出方式
方式一
exports = {
name:'mwf'
}
module.exports = exports
方式二
module.exports={
name:'mwf'
}
exports = module.exports
最終目的都是讓他們兩個指向同一個物件