【问题标题】:Using separate controllers and routes in Node.js在 Node.js 中使用单独的控制器和路由
【发布时间】:2012-07-07 07:39:22
【问题描述】:

我正在寻找主观建议(我知道这可能会关闭),但我希望能够在 node.js 项目中分离路由和控制器,所以我有一些问题:

  • 尝试拥有更少/更大的 JS 文件是不是没用?node.js 的理念是什么?
  • 我希望能够 require("routing") 并让它将我的所有路由连接到我的控制器所需的模块。如果我将所有内容都放在index.js 中,我可以轻松做到这一点,但这似乎很奇怪。我已经在进行app.get("/" controllers.index); 样式分离,但我对构建一个仅在另一个模块中包含所有 JS 文件的模块感到困惑。我错过了什么吗?
  • 或者也许有完全不同的 node.js 样式来执行此操作,而我试图将我的 ASP.NET MVC 知识映射得太深?

【问题讨论】:

标签: node.js


【解决方案1】:

如果你想把它全部放到一个文件中,你可以尝试这样的事情,它需要./routes/中的每个文件,并以app作为参数调用导出到每个文件的函数:

// routing.js

var fs = require('fs');

module.exports = function(app) {
  fs.readdirSync(__dirname + '/routes/').forEach(function(name) {
    var route = require('./routes/' + name);
    route(app);
  });
}

// routes/index.js

module.exports = function(app) {
  app.get('/something', function(req, res) { ... });
  app.get('/something/else', function(req, res) { ... });
}

// routes/pages.js

module.exports = function(app) {
  app.get('/pages/first', function(req, res) { ... });
  app.get('/pages/second', function(req, res) { ... });
}

// server.js

var app = express.createServer();
require('./routing')(app); // require the function from routing.js and pass in app

在 GitHub 上 Express 的 example 目录中也有一些有趣的示例,例如 an MVC-based one,它实现了 RESTful 路由,就像 Rails 一样。

【讨论】:

    【解决方案2】:

    如果您的意图是做一些 RESTish API 服务器, 试试看:https://github.com/kilianc/node-apiserver 还有例子:https://github.com/kilianc/node-apiserver/blob/master/examples

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-20
      • 1970-01-01
      • 2017-08-23
      • 1970-01-01
      • 2023-04-10
      • 2014-11-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多