在node.js项目中,我看到了require(path)以及require(path)()额外的paranthasis所引用的内容。 我什么时候应该使用require(path)和require(path)()
答案 0 :(得分:1)
require()
语句从正在加载的模块中返回module.exports
属性。你用它做什么完全取决于模块设置的内容。
如果模块将其设置为某种函数(通常称为模块构造函数),那么用var something = require('xxx')(...);
但是,如果模块只是导出一个带有属性的对象,那么尝试调用它实际上是一个编程错误。
因此,它完全取决于您要加载的模块正在导出。
例如,在加载文件系统模块时,它只是:
var fs = require('fs');
在这种情况下,变量fs
只是一个对象(不是函数)所以你不会调用它 - 你只需引用它上面的属性:
fs.rename(...)
以下是导出构造函数的模块示例,您可以在其后调用()
:
// myRoutes.js
module.exports = function(app) {
app.get("/", function() {...});
app.get("/login", function() {...});
}
// app.js
// other code that sets up the app object
// ....
// load a set of routes and pass the app object to the constructor
require('./myRoutes')(app);
并且,这是一个模块的示例,只是导出属性,因此您不会调用模块本身:
// myRoutes.js
module.exports.init = function(app) {
app.get("/", function() {...});
app.get("/login", function() {...});
}
// export commonly used helper function
module.exports.checkPath = function(path) {
// ....
}
// app.js
// other code that sets up the app object
// ....
// load a set of routes and then initialize the routes
var routeStuff = require('./myRoutes');
routeStuff.init(app);
if (routeStuff.checkPath(somePath)) {
// ...
}