繁体   English   中英

如何在Node.js中实现三步需求过程

[英]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.jspost.jsblog.js放入api.jsthing.js ,将item.js放入someOtherRoutes.js ,然后将api.jssomeOtherRoutes.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);
};

好的,对于我来说,我找到了以下解决方案:

app / routes / api / user.js

module.exports = function(app, express) {
    var router = express.Router();

    router.get('/test', function(req, res) {
        res.send('Test!');
    });

    return router;
};

app / routes / api / router.js

var userRoutes = require('./user');

module.exports = function(app, express){
    var router = express.Router();

    router.use('/users', userRoutes(app, express));

    return router
};

app / routes / routes.js

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM