1. 程式人生 > 其它 >nodeJs中的module到底是個啥?

nodeJs中的module到底是個啥?

1.首先,nodeJs中沒有window物件,但是有全域性變數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: [Getter/Setter],
  clearImmediate: [Function: clearImmediate],       
  setImmediate: [Function: setImmediate] {
    [Symbol(nodejs.util.promisify.custom)]: [Getter]
  }
}

2.如果引入一個模組,模組中定義var a = 1;在引入的頁面中不能訪問這個a,除非使用(global.a = 1 || module.exports)

模組列印module物件:

Module {
  id: '.',
  path: 'C:\\Users\\Administrator\\Desktop\\bable01',
  exports: {},
  filename: 'C:\\Users\\Administrator\\Desktop\\bable01\\index.js',
  loaded: false,
  children: [],
  paths: [
    'C:\\Users\\Administrator\\Desktop\\bable01\\node_modules',
    'C:\\Users\\Administrator\\Desktop\\node_modules',
    'C:\\Users\\Administrator\\node_modules',
    'C:\\Users\\node_modules',
    'C:\\node_modules'
  ]
}

當模組中require其他模組時,當前模組中的module.children會儲存引入的模組:

  • 在模組作用域下,還有一個內建的模組物件,exports,其實就是module.exports;(exports===module.exports);
  • 不要破壞exports的指向,如exports.a=[];
  • (__dirname所在目錄解析後的絕對路徑(不包含檔案),__filename返回當前模組檔案的解析後的絕對路徑(包含檔案),其實並非全域性的);