1

我有一个 ExpressJS 3 应用程序并将我的路线放在一个单独的文件中。我想在我的 app.js 中声明一些在路由文件中可用的配置 - 在路由定义本身之外。

在我的 app.js 中,我想做一些事情,例如:

app.set('path_to_models', '/path/models/');

然后在我的 routes/index.js 文件中,我希望能够做到这一点:

var Product = require(app.get('path_to_models') + 'product');

exports.list = function(req, res){
  return Product.find(function (err, products) {
    if (!err) {
       res.render('product/manage', { products: products });
    } else {
       res.render('5xx');
    }
  });
};

我看过一些与此相关的帖子,但没有一个真正解决我正在寻找的内容。我知道我可以将路由包装在一个函数中,但希望有一种替代方法可以让我的代码尽可能保持原样。

4

2 回答 2

2

我只是制作了一个单独的config模块来保存我的配置,并且在任何需要来自配置的信息的模块中,我只是像往常一样需要它。当更松散耦合的方法可以正常工作时,为什么还要将 express 加入混合中。

配置.js

exports.pathToModels = "/path/to/models";

路由.js

var config = require("./config");
console.log(config.pathToModels);
于 2012-08-20T01:18:25.290 回答
1

只需将app作为参数传递给 `routes/index.js':

var routes = require('./routes/index.js')(app);

更新:这应该是

var routes = require('./routes/index.js').init(app);

并在routes/index.js

var app;
exports=function(whichApp) {

更新:这应该是

exports.init=function(whichApp) {

  app=whichApp;
  // do initialization stuff
  return exports;
}

exports.list=...
于 2012-08-20T08:13:45.790 回答