据我所知,可以通过将模块导出为具有您希望传递的每个变量的参数的函数,将变量传递给模块。 E.g。
module.exports = module.exports = function (injectedVariable) {
app.get('/whatever', function (req, res, next) {
// Do something with injectedVariable
});
};
我知道这对于传递" app"等变量非常有用。围绕不同的模块。但是,处理外部包依赖关系的首选模式是什么。我见过这样的代码。
App.js
var jquery = require('jquery');
var _ = require('underscore');
var backbone = require('backbone');
var express = require('express');
// Pretty much every other external library
var app = express();
// Code here might config some of the 3rd party modules
require('routes/main.js')(app, _, jquery, backbone, someOtherModule, someOtherModule2);
require('routes/main.js')(app, _, jquery, backbone, someOtherModule, someOtherModule2);
// Etc
// Init server etc
然后每个路由模块将导出一个函数,其中包含所有可用的参数,以支持传递给它们的包。
有没有理由这样做?在每个文件的顶部要求('无论什么')会不会更清晰?据推测,在不同文件中为相同模块设置许多require()不是一个问题,因为节点将从运行时遇到的第一个require()实例中提取存储的缓存版本。首选哪种管理包依赖关系的方法?