我对require()
在nodeJS应用程序中的工作方式有一个基本的查询。
require()
实际返回什么?
例如,假设我想使用2个第三方软件包:lodash
和request
。安装包后,我们可以将代码编写为:
const _ = require('lodash')
_.uniq(Array)
我应该理解require()
在此处返回一个对象,uniq
是来自对象_
的方法吗?
现在让我们考虑request
包,
const request = require('request')
request (
{
url: '',
json:true
}
callback_function()
)
我在此理解,require()
直接返回了一种方法 - request()
如果我使用与下面相同的内容,我遇到类型错误req1.request is not a method
。
const req1 = require('request');
req1.request (
{
url: '',
json:true
}
callback_function()
)
请帮助我理解这一点。
答案 0 :(得分:3)
require
返回模块定义的内容。有时,模块定义了一个函数:
exports = function request(/*...*/);
...所以当你导入模块时,那就是你得到的。
有时,模块导出对象(exports
最初在加载模块时引用空白对象,然后模块添加或替换该对象):
exports._ = {
// ...
};
...所以当你导入模块时, 你得到了什么。
由模块决定。这是一个非常简单的系统。更多Modules文档(不要与ECMAScript (JavaScript) Modules文档混淆; JavaScript自己的模块与Node.js的工作方式略有不同。