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会存储引入的模块:

nodeJs中的module到底是个啥?

  • 在模块作用域下,还有一个内置的模块对象,exports,其实就是module.exports;(exports===module.exports);
  • 不要破坏exports的指向,如exports.a=[];
  • (__dirname所在目录解析后的绝对路径(不包含文件),__filename返回当前模块文件的解析后的绝对路径(包含文件),其实并非全局的);

 

nodeJs中的module到底是个啥?

上一篇:比bug还让人觉得神奇的是熟悉的功能项JUnitTest平白无故消失了……


下一篇:CocosCreator 从Git拉取项目meta文件变更问题、资源变更警告、class already exists