快递中的路线分离

时间:2016-11-12 19:31:27

标签: node.js express

为了防止在我的routes.js文件中有一长串路由,我将routes.js移动到一个简单称为routes的文件夹中,并将该文件重命名为index.js。我想创建多个其他文件来定义不同类别的路由。这是我认为我需要编写的代码来实现它:

// index.js
var express= require('express');
var app = express();
var passport = require('passport');

app.use('/api/auth', require('./auth.routes')(passport));
...

我需要auth路由,所以现在我可以像这样使用它们:

// auth.routes.js
var router = require('express').Router();

module.exports = function(app, passport) {
    router.post('/login', function(req, res) {
        ...
    });

    router.get('/me', function(req, res) {
        ...
    });
    ...
    return router;
};

当我这样做时,require('express').Router()未定义,我不知道为什么。分离这些路线的正确方法是什么?

1 个答案:

答案 0 :(得分:4)

有一个文件夹:routes

/routes/index.js

var
  express = require('express'),
  router = express.Router();

router.use('/api/auth', require('./auth'));
router.use('/api/users', require('./users'));

module.exports = router;

/routes/auth.js

var
  express = require('express'),
  router = express.Router();

router.post('/login', function(req, res) {
  ...
});

router.get('/me', function(req, res) {
  ...
});

module.exports = router;

/index.js

app.use(require('./routes')); // it will read /routes/index.js and it will read another files and build routing

P.S。在/routes/index.js中使用护照检查(或在嵌套路由文件中单独使用)作为路由和需要部分之间的中间件。

如果您想查看真实示例,请检查this