NodeJS模块化遵循了CommonJS规范,
根据CommonJS规范,每个文件就是一个模块,
NodeJS会为每一个JS文件生成一个module对象,这个module对象会有一个exports属性,
并且这个exports属性是一个空对象

exports 返回的是模块函数
module.exports 返回的是模块对象本身,返回的是一个类

  • exports的方法,module.exports也是一定能完成的
  1. exports.[function name] = [function name]
  2. moudle.exports= [function name]

es6模块的区别

  1. require: node es6 都支持的引入
  2. export / import : 只有es6 支持的导出引入
  3. module.exports / exports: 只有 node 支持的导出

module.exports

  1. module={
  2. exports:{}
  3. }
  1. var app = {
  2. name: 'app',
  3. version: '1.0.0',
  4. sayName: function(name){
  5. console.log(this.name);
  6. }
  7. }
  8. module.exports = app;
  9. // 等价于
  10. module.exports = {
  11. name: 'app',
  12. version: '1.0.0',
  13. sayName: function(name){
  14. console.log(this.name);
  15. }
  16. }

函数

  1. module.exports = function(args){
  2. this.args = args;
  3. }

exports