在Node.js中使用单独的控制器和路由

在Node.js中使用单独的控制器和路由,node.js,Node.js,我正在寻找主观建议(我知道这可能会结束),但我希望能够在node.js项目中分离路由和控制器,因此我有一些问题: 尝试是没有用的吗?node.js的理念是拥有更少/更大的js文件吗 我希望能够要求(“路由”),并让它将我的所有路由连接到控制器所需的模块。如果我把所有东西都放在index.js中,我就可以很容易地做到这一点,但这似乎很奇怪。我已经在做app.get(“/”controllers.index)样式分离,但我正在构建一个模块,该模块只包含另一个模块中的所有JS文件。我错过什么了吗 或

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

  • 尝试是没有用的吗?node.js的理念是拥有更少/更大的js文件吗
  • 我希望能够要求(“路由”),并让它将我的所有路由连接到控制器所需的模块。如果我把所有东西都放在
    index.js
    中,我就可以很容易地做到这一点,但这似乎很奇怪。我已经在做
    app.get(“/”controllers.index)样式分离,但我正在构建一个模块,该模块只包含另一个模块中的所有JS文件。我错过什么了吗
  • 或者可能有一种完全不同的node.js风格来实现这一点,而我试图将我的ASP.NET MVC知识映射得太深了

如果您想将所有内容都放在一个文件中,您可以尝试这样的方法,它需要
/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
目录中也有一些有趣的例子,比如它实现了RESTful路由,就像Rails一样。

如果您的目的是在服务器上执行RESTishAPI, 试一试:
还有一些例子:

试试轻量级的express flatiron MVC