【发布时间】:2015-08-14 00:03:10
【问题描述】:
我正在努力将我的代码“模块化”成更小的部分。我知道如果我有不同的路由文件,我可以像这样使用它:
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 引入主文件@987654 @。
【问题讨论】:
-
@Plato,我尝试了一种分两步的方法,我知道它是如何工作的,但我不想将所有 api 路由放在一个地方,因为它会变得混乱。如果我在
app/routes/api/user.js中导出路由器,并希望将app/routes/api.js用于我的应用程序中的所有路由/api,例如GET app.dev/api/users,那么我不知道app/routes/api.js文件中应该发生什么。显然,我需要在 modules.export 中从中导出一个路由器对象,但它会从user.js、blog.js等导入不同的路由器,所以我需要一些建议或思路如何 @987654342 @ 应该看起来像 -
这看起来会变得非常混乱,特别是如果用户、帖子、博客等也需要访问
app。我会转移到一个更扁平的 require 系统,例如我在此处发布的那个:stackoverflow.com/questions/31477523/… 使用该设置,您只需require('../app')在任何需要的地方。不过,您还必须根据需要它的文件的位置确保您的 app.js 路径正确。