javascript(ecmascript、DOM、BOM)
nodsJS(ecmascript、os、file、net、database)
底層語法一樣,擴(kuò)展部分不一樣
在js中的頂層對象是window,在node中頂層對象是global
nodeJS一個文件就是一個模塊,一個模塊就是一個作作用域
__filename和__dirname
global
模塊加載系統(tǒng)
require(“模塊”);(返回值就是加載模塊中的module.exports)
模塊加載機(jī)制:
路徑(絕對路徑,相對路徑【require(./2.js)】2.js將會加載核心模塊或者node_modules)
require("./2");
首先按照加載的模塊的文件名稱進(jìn)行查找
如果沒有找到,則會在模塊文件名稱后加上.js后綴進(jìn)行查找
如果沒有找到則會加上json后綴
還沒找到則會加上node
還沒找到就報錯
--------------------------------------------------------------
在一個模塊中通過var聲明的變量,其作用域的范圍是當(dāng)前模塊,外部文件不能夠直接訪問,如果我們想要訪問可以的做法:
1、global.a
2、使用模塊對象module(保存和當(dāng)前模塊的有關(guān)信息)
在module下面有一個exports對象,我們可以通過這個對象把變量提供給別人訪問
在模塊作用域,還有一個內(nèi)置的模塊對象,exports他其實就是module.exports
console.log(module.exports==exports);
module.exports與exports不要賦值(對象),一旦賦值就會斷開