Javascript nodeJS中require()的功能

Javascript nodeJS中require()的功能,javascript,node.js,requirejs,Javascript,Node.js,Requirejs,我对nodeJS应用程序中的require()如何工作有一个基本的疑问 require()实际返回的是什么 例如,假设我想使用两个第三方软件包:lodash和request。安装软件包后,我们可以将代码编写为: const _ = require('lodash') _.uniq(Array) 因此,我应该理解require()在这里返回一个对象,而uniq是对象\uu中的一个方法吗 现在让我们考虑请求< /代码>包, const request = require('request') re

我对nodeJS应用程序中的
require()
如何工作有一个基本的疑问

require()
实际返回的是什么

例如,假设我想使用两个第三方软件包:
lodash
request
。安装软件包后,我们可以将代码编写为:

const _ = require('lodash')
_.uniq(Array)
因此,我应该理解
require()
在这里返回一个对象,而
uniq
是对象
\uu
中的一个方法吗

现在让我们考虑<代码>请求< /代码>包,

const request = require('request')
request (
{
  url: '',
  json:true
}
callback_function()
)
因此,我应该理解,
require()
直接返回了一个方法-
request()

如果我使用与下面相同的方法,我会遇到一个类型错误,
req1.request不是一个方法

const req1 = require('request');
req1.request (
{
  url: '',
  json:true
}
callback_function()
)

请帮助我理解这一点。

require
返回模块定义的任何内容。有时,模块定义单个功能:

exports = function request(/*...*/);
…因此,当您导入模块时,得到的就是这些

有时,模块导出对象(
导出
最初在加载模块时引用空白对象,然后模块添加或替换该对象):

…因此,当您导入模块时,得到的就是这些


这取决于模块。这是一个非常简单的系统。文档中有更多内容(不要与文档混淆;JavaScript自己的模块与Node.js的工作方式略有不同)。

1因此我应该理解
require()
在这里返回一个对象,而
uniq
是来自对象yes 2的一个方法。我是否应该理解,
require()
已经直接返回了一个方法-
request()
。不。在这里,
请求
可能是
瓶子
。它只是一个变量名。但它保存通过
模块导出的任何内容packageHi@Adelin.. 谢谢你的解释。我已经浏览了安装包中的
uniq.js
request.js
。我发现这里的代码是-
module.exports=uniq
module.exports=Request
。他们在任何地方都没有输出任何对象。你能解释一下为什么我们用
.uniq()
而不是直接
uniq()
。谢谢你好,克劳德,非常感谢你的详细解释。我已经浏览了安装包中的
uniq.js
request.js
。我发现这里的代码是-
module.exports=uniq
module.exports=Request
。也不知道他们在哪里导出任何对象。你能解释一下为什么我们用
.uniq()
而不是直接
uniq()
。谢谢。@METALHEAD-您不是在导入
uniq.js
,而是在导入
lodash
,它将其他文件的内容聚合到一个单独的模块中,并将其导出为
(但也可以直接导出),请参见
lodash.js
,该模块执行此操作:
(freeModule.exports=)。\u=
(其中
freeModule
在引导中是
module
,这很复杂,因为它支持多模块系统)。非常感谢您的解释。
exports._ = {
    // ...
};