如何在express框架中将应用程序文件中的路线分开
例如 :
server.js文件
var express = require('express'), app = express(), port = 3000, routes = require('./app/routes/apiRoutes'); routes(app); app.listen(port);
routes.js文件
'use strict'; module.exports = function( app ) { var api= require('../controllers/apiController'); app.route('/get').get(api.get); };
apiController.js文件
'use strict'; exports.get = function(req, res) { // console.log( req.app ); // access it but it didn't work ? // here want to access app to set cookie and changed cookie ? };
如果有另一种方式,请帮助我感谢:)
如果我正确理解你的问题,用路线你可以做这样的事情:
在routes.js
文件中:
var router = require('express').Router() router.get('/home', function(req, res, next) { res.render('index') }) module.exports = router
在server.js
文件中:
var mainRoutes = require('./routes.js') app.use(mainRoutes)
最好的方法(在我看来)使用控制器从另一个文件它使用exports.functionName
表示法:
在一些someController.js
文件中:
exports.homePage = function(req, res) { res.render('index') }
所以,你的路由器将如下所示:
var router = require('express').Router() var someController = require('./someController.js') router.get('/home', someController.homePage) module.exports = router
以不同的方式,在app.use
使用路线
app.js
:
const express = require('express'), app = express(), port = 3000, routes = require('./app/routes/apiRoutes'); app.use(routes); app.listen(port);
apiRoutes.js
:
const router = require('express').Router(), apiController = require('../controllers/apiController'); router.get( '/get', apiController.get); module.exports = router;
检查这个例子: app.js , 一些路由文件