• Node.js 中 exports 和 module.exports 的区别


    1. 每一个模块中都有一个 module 对象, module 对象中有一个 exports 对象
    2. 我们可以把需要导出的成员都放到 module.exports 这个接口对象中,也就是 module.exports.xxx = xxx 的方式
    3. 但是,这样显得特别麻烦,为了方便操作,在每一个模块中又提供了一个叫 exports 的成员
    4. 所以,有了这样的等式: module.exports === exports
    5. 所以,对于:module.exports.xxx = xxx 的方式等价于 exports.xxx = xxx
    6. 当一个模块需要导出单个成员的时候,必须要使用 module.exports = xxx
    7. 因为每个模块最终向外 return 的是 module.exports,而 exports 只是 module.exports 的一个引用,所以即便你为 exports = xxx 重新赋值,也不会影响 module.exports

    重新建立引用关系:

    exports = module.exports;

    导出多个成员(必须在对象中):

    • 方法一(使用 exports):
          exports.a = 123;
          exports.b = 'hello';
          exports.c = () => {
              console.log('ccc');
          };
          exports.d = {
              foo: 'bar'
          };
    • 方法二(使用module.exports):
          module.exports = {
              add: (x, y) => {
                  return x + y;
              },
              str: 'hello'
          };

    导出单个成员(拿到的直接就是 字符串, 数字 等):

      

    module.exports = 'hello';

    但是的话,因为只能导出单个成员,所以会出现覆盖情况,如下所示:

        module.exports = 'hello';
    
        // 以这个为准,后者会覆盖前者
        module.exports = (x, y) => {
            return x + y;
        };

     

  • 相关阅读:
    .Net Core 静态文件跨域访问
    SQL Server查看锁表与解锁表
    C# 获取Bilibili网站中的视频信息
    C# 生成条形码、二维码
    HttpWebRequest 远程服务器返回错误: (403) 已禁止
    C# NPOI导出Excel以及动态设置列宽
    【c++设计模式】观察者模式
    【c++设计模式】状态模式
    【c++设计模式】职责链模式
    【c++设计模式】命令模式
  • 原文地址:https://www.cnblogs.com/duxiu-fang/p/11147658.html
Copyright © 2020-2023  润新知