将路由和中间件分离到文件中(Express.js)
Separating Routes and Middleware into Files (in Express.js)
我想将 routes 和 middleware 从我的主要 app.coffee[= 中分离出来30=]-文件。 (我正在使用 Express.js。)
这个文件已经广泛并且不再容易浏览。
如何将它们放入单独的文件中,以便它们仍能相互识别?
使用中间件的路由示例:
app.post '/signup', signup.inputsOK, signup.userIsNew, signup.createUser, allowUser, (req, res) ->
res.redirect '/'
每个中间件函数都应该对每个路由可用,并且每个路由都应该在主 app.coffee- 文件中可用!
谢谢你的想法!
请记住,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 对象传递给您导入的每个新模块。由于您将 exports 设置为仅一个函数 - 它采用一个参数,即创建的 Express 对象 - 您可以使用所需的中间件创建路由
我想将 routes 和 middleware 从我的主要 app.coffee[= 中分离出来30=]-文件。 (我正在使用 Express.js。)
这个文件已经广泛并且不再容易浏览。
如何将它们放入单独的文件中,以便它们仍能相互识别?
使用中间件的路由示例:
app.post '/signup', signup.inputsOK, signup.userIsNew, signup.createUser, allowUser, (req, res) ->
res.redirect '/'
每个中间件函数都应该对每个路由可用,并且每个路由都应该在主 app.coffee- 文件中可用!
谢谢你的想法!
请记住,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 对象传递给您导入的每个新模块。由于您将 exports 设置为仅一个函数 - 它采用一个参数,即创建的 Express 对象 - 您可以使用所需的中间件创建路由