双括号在要求中意味着什么

And*_*man 24 node.js express

我知道这个需要声明的作用.

var express = require('express');
var app = express();
Run Code Online (Sandbox Code Playgroud)

但有时我会在要求后看到两个括号.

var routes = require('./routes')(app);
Run Code Online (Sandbox Code Playgroud)

问)这是什么意思,它是如何工作的?

Tim*_*per 27

这是一种模式,其中module.exports您需要的模块设置为一个函数.要求模块返回一个函数,并且require之后的括号用参数计算函数.

在上面的示例中,您的./routes/index.js文件将类似于以下内容:

module.exports = function(app) {
  app.get('/', function(req, res) {

  });
  // ...
};
Run Code Online (Sandbox Code Playgroud)

这种模式通常用于将变量传递给模块,如上面的app变量所示.

  • Aaah ....所以这意味着:`var express = require('express'); var app = express();`**可以这样写:`var app = require('express')();`...即使这并不意味着****应该= =) (7认同)

Edw*_*rzo 10

好吧,require是Node.js提供的一个函数,它基本上为你加载一个模块,它返回你在你加载的模块中公开的内容.

如果您在给定模块中公开(通过使用module.exports)是一个函数,那么这就是需要返回的东西.例如.

//moduleX.js
module.exports = function(){
  return "Helo World";
}
Run Code Online (Sandbox Code Playgroud)

然后,如果您需要它,您将获得一个功能

var f = require('./moduleX');
console.log(f()); //hello world
Run Code Online (Sandbox Code Playgroud)

当然,您可以在需要时直接调用该函数.

var greet = require('./moduleX')();
console.log(greet);
Run Code Online (Sandbox Code Playgroud)