如何知道从模块导出的内容?

时间:2018-05-17 15:59:26

标签: node.js node-modules

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

  1. 从模块导出对象:

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

    此处http模块导出一个可用于调用其方法的对象

  2. 导出构造函数:

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

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

  3. 导出功能:

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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