将路由和中间件分成文件(在Express.js中)

时间:2016-11-06 08:41:58

标签: node.js coffeescript

我想将路径中间件从我的主 app.coffee 文件中分离出来。 (我使用 Express.js 。)

此文件已广泛 ,并且不再容易浏览。

如何将它们放入单独的文件中以便彼此了解?

使用中间件的路由示例:

app.post '/signup', signup.inputsOK, signup.userIsNew, signup.createUser, allowUser, (req, res) ->
  res.redirect '/'

每个中间件功能应该适用于每个路由,并且每个路由都应该在主app.coffee文件中可用!

感谢您的想法!

1 个答案:

答案 0 :(得分:1)

请记住,Express中间件只是功能,所以只要需要它就可以使用它。

user_routes.coffee

hello_user = ( req, res, next ) ->
    res.json {"message": "hi"}

module.exports = {
    hello_user : hello_user
}

app.coffee

user_routes = require './user_routes' 
app.post '/signup', signup.inputsOK, signup.userIsNew, signup.createUser, allowUser, user_routes.hello_user

我会做这样的中间件设置:app.coffee文件负责设置中间件和实际业务逻辑功能的路由......然后所有最后一个功能需要做的是所需的实际工作。 (这也使得功能更容易进行单元测试,而不必伪造Express路由)

或者通过一些小工作,您可以分离出路线并让每个文件都执行app.add工作。 (我不喜欢这种方法,但许多应用程序都这样做。)

user_routes.coffee

setupUserRoutes = (app) ->
    app.post '/signup', signup.inputsOK, signup.userIsNew, signup.createUser, allowUser, (req, res) ->
      res.redirect '/'

module.exports = setupUserRoutes

app.coffee

app = express()

require( './user_routes' )(app)

在这里,您将Express对象传递给您导入的每个新模块。由于您将导出设置为只有一个函数 - 它带有一个参数,即创建的Express对象 - 您可以使用所需的中间件创建路径