我想知道将app = express()传递到另一个模块与在该模块中要求表达之间的区别是什么。
如果我像这样传递app = express():
var app = require('express');
app.locals.title = title;
require('somemodule')(app);
然后在somemodule中;
exports = function(app) {
console.log(app.locals.title);
}
如果您要在另一个模块中再次使用express,那么您是否可以使用核心文件中设置的app.locals变量。
var app = require(express);
console.log(app.locals.title);
如果没有,您是否需要在此模块中重新定义app.locals?
哪种方法最好使用。
答案 0 :(得分:0)
首先,我假设你正在使用Express 4x。在4x中,模块实际上导出了一个函数,因此在需要模块之后,您需要首先创建应用程序。像这样:
var express = require('express');
var app = express();
如果模块执行类似添加中间件或向 项目中创建的app
添加功能的内容,那么只有在您首次创建时才能使用该模块应用程序,然后将其传递给模块。见下文:
var express = require('express);
var app = express();
require('middleware-adder')(app);
// app now has the middeware provided by my module.
在将应用程序传递到您需要的模块之前设置的任何内容(例如您的示例中为app.locals.title
)确实可以在模块内部访问。作为一个模块的作者,你需要更加确定消费者正在通过你期望的那样!
希望这有帮助。