2016-12-06 73 views
3

我是新來的節點/快遞,我覺得這是一個簡單的要求,但我並不完全,如果我的邏輯/理解的聲音。快遞routes文件

這裏是我的應用程序結構的簡化版本:

/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/filtertwofilter.js路線點的流量,然後在路線,我想處理它們像這樣:

// filter.js 

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

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

這是正確的方法去做這件事嗎?或者我應該以不同的方式處理我的路線?

回答

2

我不相信你的代碼將完成你想完成的任務。當你這樣做:

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

您與'/filterone'附加預先添加到您的應用程序的路線,你在filter.js定義的路由。既然你定義一個過濾'/filterone'路線(我認爲這是filter.js)。這意味着訪問您需要查詢/filterone/filterone的路線。

安德烈亞斯·勞的答案會工作,但如果你想多路徑文件,你可以只讓一個小的補充。

//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

編輯*這是基於安德烈亞斯·勞的答案,並利用子路徑你的路由文件的一個例子:

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; 
+0

我怎麼會佔我的過濾器多條路線。 js文件呢? – knoll

+0

我在我的問題中添加了一個示例,讓我知道它是否適用於您。 – morsecodist

+0

啊,現在有道理。謝謝morsecodist! – knoll

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等。

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; 
+0

當我嘗試這種方法時,我得到了這兩個路由的404。 – knoll