在单独的路径文件NodeJS Express中分离相同级别的路由

时间:2017-05-08 19:58:23

标签: node.js express

所以我没有在主index.js路由文件中使用我的auth路由(注册,登录等),而是希望将它们分开:

routes
-- index.js
-- auth
  -- index.js
  -- login.js
  -- register.js

但我似乎无法让它发挥作用。我以为会是这样的:

// index.js
const express = require('express'),
      router = express.Router();

router.use('/', function(req, res) {
  // if not logged in, redirect login else redirect to dashboard
  res.send("hello world");
});

require('./auth/index.js');

module.exports = router;

则...

// auth/index.js
const express = require('express'),
      router = express.Router();

router.use('/', require('./login.js'));
router.use('/', require('./register.js'));

module.exports = router;

则...

// auth/login.js
const express = require('express'),
      router = express.Router();

router.use('/login', function(req, res) {
  console.log("Got here!");
  res.send("This is the login screen.")
});

module.exports = router;

但是如果我在我的服务器上登录/登录,我只看到你好世界:(

很多其他帖子但无法看到他们如何组织同一级别的代码,因为我希望结束路由

/
/login/
/register/

/
/auth/login/
/auth/register/

希望您了解我的来源。

1 个答案:

答案 0 :(得分:0)

课程学习:

需要使用app.route(在本例中为router.route)来实际创建单个结束路由。

app.use可用于将一个函数或一组函数(在本例中为一组路径)分配给路径。

// index.js
const express = require('express'),
      router = express.Router();

router.route("/")
  .get(function(req, res) {
    // if not logged in, redirect login else redirect to dashboard
    res.send("Hello World");
  })

router.use('/', require('./auth/index.js'));

module.exports = router;

和...

// auth/login.js
const express = require('express'),
      router = express.Router();

router.route("/login")
  .get(function(req, res) {
    res.send("This is the login screen.")
  });

module.exports = router;