環境:
Node應用由模塊組成,採用CommonJS模塊規範。
node的全局對象是global,沒有window這個對象。
process表示當前執行的進程,掛在global之下。javascript
CommonJS
每一個文件是一個模塊,有本身的做用域。執行時,咱們寫的代碼會被自動包裹在一個function裏。
在模塊內部module變量表明模塊自己。
module.exports屬性表明模塊對外接口。
定義一個模塊就是建立一個文件。
想在模塊內部輸出一些屬性的話,須要把屬性放到module.exports中。java
require規則
/表示絕對路徑,./表示相對與當前文件的。
只是js,json,node擴展名,若是咱們不寫模塊的擴展名,會依次嘗試,都找不到就報錯。
不寫路徑就認爲時build-in模塊或者各級node-modules內的第三方模塊。node
require的特性
module被加載的時候會執行,而後緩存下來。 不會重複加載,即便require了屢次。
某個模塊出現循環加載的時候,只輸出已執行的部分,還未執行的部分不會輸出。json
//05a.js module.exports.test = 'A' const modB = require('./05b') console.log('modA:',modB.test) module.exports.test = 'AA' //05b.js module.exports.test = 'B' const modA = require('./05a') console.log('modB:',modA.test) module.exports.test = 'BB' //05.js const modA = require('./05a') const modB = require('./05b') //output: modB:A modA:BB
global全局變量下的一些屬性
CommonJS, process, console, Buffer, timer數組
process經常使用屬性
argv:數組
argv0:argv的第0項
execArgv:數組
execPath:argv的第1個參數
cwd():返回當前路徑
nextTick()插到隊尾緩存