module.exports 、 exports、export、export default 区别

module.exports 与 exports
  • 一个文件就是一个模块,即module;这个文件有自己的作用域,在一个文件里面定义的变量、函数、类等都是私有的,对其他文件不可见

  • 在每个模块内部,module变量即为当前模块,这个变量是一个对象,他的exports属性是对外的接口属性,加载这个模块,其实就是加载该模块的module.exports属性;

      'use strict';
      var a = 2;
      var b = 3;
    
      function methodTools() {
    
      }
    
      module.exports.fa = a;
      module.exports.fb = b;
    

    上述代码通过module.exports对外暴露 fa、fb两个变量 外部用require、或者import则可以访问到fa、fb两个变量了

  • exports:为了方便,Node为每个模块提供一个exports变量,指向module.exports。这等同在每个模块头部,有一行这样的命令。

      var exports = module.exports;
    

    即 exports 为 module.exports。所以通过exports可以访问到fa、fb了

      'use strict';
      var a = 2;
      var b = 3;
    
      function methodTools() {
    
      }
    
      exports.fa = a;
      exports.fb = b;
    
  • 注意exports、module.exports 导出的是module;如果外部文件引用

    • import引用

        import example from './common/appMethod';
        let { fa, fb } = example;
        console.log(fa); //2
      
    • require引用

        var example = require('./common/appMethod')
        console.log(example.fa);//2
        console.log(example);//{fa: 2, fb: 3}
      
export 、 export default
  • ES6使用 export 和 import 来导出、导入模块

      // a文件
      // 'use strict';
      var a = 2;
      var b = 3;
    
      function methodTools() {
    
      }
      export { a, b };
    
      // b文件导入a文件
      var example = require('./common/appMethod')
      console.log(example);
    
      // 输出信息
      {__esModule: true}
      a: 2
      b: 3
    
      // c 文件导入a文件
      import { a, c } from './common/appMethod';
      console.log(a, c);
      // 输出信息
      2 undefined
    
  • 使用export default命令,为模块指定默认输出

    • 模块文件

        'use strict';
        var a = 2;
        var b = 3;
      
        export { a, b };
        export default a;
      
    • 导入模块

        import { a, b, c, d, j } from './common/appMethod';
        import def_M from './common/appMethod';
        console.log(a, b, c, d, j, def_M);
      
        输出信息
        2 3 undefined undefined undefined 2
      
  • 如果使用export default,不能使用结构赋值获取到导出变量

  • 使用require

      var example = require('./common/appMethod');
      console.log(example);
    
      // 输出
       {default: 2, __esModule: true}
      a: 2,
      b: 3,
      default: 2,
    

转载于:https://my.oschina.net/KJhulinhua/blog/3058692

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值