【问题标题】:How to know what is exported from a module?如何知道从模块中导出了什么?
【发布时间】:2018-05-17 15:59:26
【问题描述】:

到目前为止,我已经看到了在 node.js 中使用模块的不同方式。

  1. 从模块中导出对象:

    var http=require('http');
    http.createServer(<callback function>).listen(<port>)
    

    http 模块在这里导出一个可用于调用其方法的对象

  2. 导出构造函数:

    var eventEmitter=require('events');
    var obj= new eventEmitter();
    

    这里将单词new用作返回的函数构造函数。我们可以通过对象obj使用eventEmitter的方法。

  3. 导出函数:

    var connect=require('connect');
    var obj=connect();
    

    这里的函数是从模块connect 导出的,函数返回一个对象。该对象可用于调用其方法。

我的问题是如何知道导出了什么?如何知道我们是否需要为使用 new 运算符从模块导出的任何内容创建一个对象,或者导出的函数是否返回一个对象,或者模块本身是否导出一个对象。

【问题讨论】:

    标签: node.js node-modules


    【解决方案1】:

    通常,人们会阅读他们正在使用的模块的文档并使用提供的语法。但是,如果您尝试以编程方式执行此操作:

    模块导出可以是任何东西,可以将其视为任何其他 javascript 变量。与其他 javascript 变量一样,您可以使用 typeof operator 来区分对象和函数的类型。如果它是一个函数,你可以测试它是否是这样的构造函数

      try {
        new myFunction();
        console.log("myFunction is a constructor");
      } catch (err) {
        console.log("myFunction is NOT a constructor");
      }
    

    【讨论】:

      猜你喜欢
      • 2016-11-18
      • 1970-01-01
      • 2019-12-12
      • 2019-09-09
      • 1970-01-01
      • 2020-09-25
      • 2022-07-21
      • 1970-01-01
      • 2019-03-22
      相关资源
      最近更新 更多