我正在努力将我的代码“模块化”成更小的部分。我明白,如果我有不同的路由文件,我可以使用它:
var apiUserRoutes = require('./app/routes/api/user')(app, express);
app.use('/api/user', apiUserRoutes);
var apiPostRoutes = require('./app/routes/api/post')(app, express);
app.use('/api/post', apiPostRoutes);
在每个文件中:
module.exports = function(app, express) {
var router = express.Router();
router.route('...')
...
return router;
};
如果我们将其称为两步骤要求流程,那么我想要实现的是一个需要三个步骤的流程。比如说,我们有一个以下项目结构:
-server.js
-app
---routes
-----api.js
-----someOtherRoutes.js
-----api
-------user.js
-------post.js
-------blog.js
-----someOtherRoutes
-------thing.js
-------item.js
我想要user.js
,post.js
,blog.js
加入api.js
和thing.js
,item.js
加入someOtherRoutes.js
,然后将api.js
和someOtherRoutes.js
放入主文件server.js
。
答案 0 :(得分:1)
我建议你直接在需求范围内绑定路由。
// app.js
require('./app/routes/api.js')(app, express);
// api.js
module.exports = function(app, express){ ...
// if user.js exports a function(req, res<, next>){} bind it:
app.use('/api/user', require('./api/user.js'));
// if post.js exports a function(app, express){} and binds by itself just run it:
require('./api/post.js')(app, express);
};
答案 1 :(得分:1)
好的,所以对于我的情况,我找到了以下解决方案:
module.exports = function(app, express) {
var router = express.Router();
router.get('/test', function(req, res) {
res.send('Test!');
});
return router;
};
var userRoutes = require('./user');
module.exports = function(app, express){
var router = express.Router();
router.use('/users', userRoutes(app, express));
return router
};
var apiRoutes = require('./api/router');
module.exports = function(app, express) {
var router = express.Router();
router.use('/api', apiRoutes(app, express));
return router;
};
现在点击GET http://app.dev/api/users/test
我得到了所需的结果,所以基本上我通过user.js
将router.js
和所有其他api特定路由包含到主api-router文件router.use(...)
中,在具有特定前缀的所有其他路由中,如http://app.dev/someOtherRoute
我也可以这样做。然后,我将每个子文件夹中的所有router.js
个文件都包含在主routes.js
中,然后我只将此文件包含到我的server.js
中。对我来说似乎很干净。