到目前为止,我已经看到了在node.js中使用模块的不同方法。
从模块导出对象:
var http=require('http');
http.createServer(<callback function>).listen(<port>)
此处http
模块导出一个可用于调用其方法的对象
导出构造函数:
var eventEmitter=require('events');
var obj= new eventEmitter();
这里使用单词new
作为函数构造函数返回。我们可以使用eventEmitter
到对象obj
的方法。
导出功能:
var connect=require('connect');
var obj=connect();
此函数从模块connect
导出,函数返回一个对象。该对象可用于调用其方法。
我的问题是如何知道出口的是什么?如何知道我们是否需要使用new
运算符为从模块导出的任何内容创建对象,或者导出的函数是否返回对象,或者模块本身是否导出对象。
答案 0 :(得分:0)
通常,人们会阅读他们正在使用的模块的文档并使用提供的语法。但是,如果您尝试以编程方式执行此操作:
模块导出可以是任何东西,可以将其视为任何其他javascript变量。与其他javascript变量一样,您可以使用typeof operator来区分对象和函数之间的类型。如果它是一个函数,你可以测试它是否是像这样的构造函数
try {
new myFunction();
console.log("myFunction is a constructor");
} catch (err) {
console.log("myFunction is NOT a constructor");
}