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返回当前模块文件的解析后的绝对路径(包含文件),其实并非全局的);