首页 > 解决方案 > 如何知道从模块中导出了什么?

问题描述

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

  1. 从模块中导出对象:

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

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

  2. 导出构造函数:

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

    这里的词new被用作构造函数返回的函数。我们可以使用eventEmitterthrough object的方法obj

  3. 导出功能:

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

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

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

标签: node.jsnode-modules

解决方案


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

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

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

推荐阅读