Node.js,commonjs,require

環境:
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()插到隊尾緩存

相關文章
相關標籤/搜索