[英]How to achieve a three-step requiring process in node.js
我正在努力将代码“模块化”成较小的部分。 我得到的是,如果我有不同的路由文件,则可以像这样使用它:
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
。
我建议您将路由直接绑定到需求中。
// 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);
};
好的,对于我来说,我找到了以下解决方案:
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
和所有其他API特定的路由到主API的路由器文件router.js
通过router.use(...)
,在其他所有带有某些前缀的路由(例如http://app.dev/someOtherRoute
我也可以这样做。 然后,我将每个子文件夹中的所有router.js
文件都包含到主routes.js
,然后仅将此文件包含到我的server.js
。 对我来说似乎很干净。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.