单个.js文件中的快速路由

时间:2016-12-06 18:07:40

标签: javascript node.js express

我是Node / Express的新手,我认为这是一个简单的问题,但如果我的逻辑/理解是合理的,我就不太了解。

这是我的应用结构的简化版本:

/app
  /routes
    filter.js
    index.js
  app.js

我已经在我的app.js文件中定义了我的路线。

// app.js

app.use('/', require('./routes/index'));
app.use('/filterone', require('./routes/filter'));
app.use('/filtertwo', require('./routes/filter'));

我想将来自 / filterone / filtertwo 的流量指向我的 filter.js 路由,然后在我喜欢这样处理它们的路线:

// filter.js

router.get('/filterone', function(req, res, next) {
  // do something
}

router.get('/filtertwo', function(req, res, next) {
  // do something
}

这是正确的方法吗?或者我应该以不同的方式处理我的路线?

3 个答案:

答案 0 :(得分:2)

我不相信你所拥有的代码会完成你想要完成的任务。当你这样做时:

app.use('/filterone', require('./routes/filter'));

您要将filter.js中定义的路线添加到预先附加'/filterone'的应用路线中。由于您定义了过滤器'/filterone'路由(我假设它位于filter.js)。这意味着访问查询/filterone/filterone所需的路线。

Andreas Rau的答案可行,但如果你想要多个路径文件,你可以做一个小的补充。

//app.js

const express = require('express'),
      index = require('./routes/index')
      filters = require('./routes/filter'),
      app = express();

app.use('/', index);
app.use('/filter', filters);

这样您就可以使用/filter/route_name访问过滤器路线了。如果它们位于不同的路径文件中,这将使你可以自由地调用不同的路由。例如,您可能希望显示过滤器并在索引中显示某些内容。通过这种方式,您可以将它们都显示在各自的文件中,索引显示路线为/show,过滤器显示路线为/filter/show

编辑*以下是基于Andreas Rau的回答并使用子路径的路线文件的示例:

routes/filter.js

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

router.get('/show',(req,res) => {
 //handle /filter/show
} );


router.get('/filterone',(req,res) => {
 //handle /filter/filterone
} );

router.get('/filtertwo',(req,res) => {
 //handle /filter/filtertwo
} );

module.exports = router;

routes/index.js

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

router.get('/show',(req,res) => {
 //handle /show
} );

module.exports = router;

答案 1 :(得分:0)

//filter.js

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

router.get('/',(req,res) => {
 //code...
} );


router.get('/filterone',(req,res) => {
 //code...
} );

router.get('/filtertwo',(req,res) => {
 //code...
} );

module.exports = router;

现在您可以在app.js代码中使用它:

//filter.js

const express = require('express'),
      router = require('./route/filter'),
      app = express();

app.use('/',router);

编辑: 您可以使用这样的多个路由器,只需更改基本路径(app.use的第一个参数)! 所以基本上你可以创建索引路由器,filterone路由器等等。

答案 2 :(得分:0)

你的filterone和filtertwo都像过滤器中的子路由,所以在你的应用中你只需要:

app.use('/filter', require('./routes/filter'));

然后在您的路线文件夹中,您将创建filter.js文件并抨击那里的路线

filter.js例子:

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

//optional if you want to use controllers or not
var controller = require('path to controller') 

//in case of controllers
router.get('/filterone', controller.funcToTakeCareOfFilterone);
router.get('/filtertwo', controller.funcToTakeCareOfFiltertwo);

//in case of no controllers
router.get('/filterone', function(req, res , next) {
  //your code
});
router.get('/filtertwo', function(req, res , next) {
 //your code
});

module.exports = router;