NodeJS2-1環境&調試----CommonJS

CommonJSnode

  • 每一個文件是一個模塊,有本身的做用域
  • 在模塊內部module變量表明模塊自己
  • module.exports屬性表明模塊對外接口

require規則json

  • /表示絕對路徑,./表示型對於當前文件的(相對路徑)
  • 支持js,json,node拓展名,不寫依次嘗試,都找不到就會報錯
  • 不寫路徑則認爲build-in模塊或者各級node_modules內的第三方模塊

require特性緩存

  • module被加載的時候執行,加載後緩存(只加載一次)
  • 一旦出現某和模塊被循環加載,就只輸出已經執行的部分,還未執行的部分不會輸出

require特性1的例子:ui

02_cusmod.jsthis

console.log('this is a module');
const testVar = 100;
function test(){
    console.log(testVar);
}
//對外進行兩個輸出
module.exports.testVar = testVar
module.exports.testFn = test;

調用它的 04_cache.jsspa

require('./02_cusmod.js');
require('./02_cusmod.js');

若是不是隻加載一次的話,那麼運行04_cache.js控制檯就會輸出兩次 this is module 這句話code

但是blog

require特性2的例子:(平常要避免出現這種狀況)接口

05_modA.js作用域

module.exports.test = 'A';
const modB = require('./06_modB.js')
console.log('modA的執行結果'+modB.test);
module.exports.test = 'AA'

06_modB.js

module.exports.test = 'B'
const modA = require('./05_modA.js')
console.log('modB的執行' + modA.test);
module.exports.test='BB'

07_main.js

const modA = require('./05_modA.js')
const modB = require('./06_modB.js')//由於modA 裏面已經調用了modB,因此這裏調用的modB只是從緩存裏讀出
console.log(modA.test);
console.log(modB.test);

運行結果:

相關文章
相關標籤/搜索