nodeJs中的module到底是個啥?
阿新 • • 發佈:2021-07-30
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返回當前模組檔案的解析後的絕對路徑(包含檔案),其實並非全域性的);