2014-05-12 21 views
25

Tôi có một ứng dụng với mã sau đây cho việc định tuyến:Sự khác biệt giữa "express.Router" và định tuyến bằng cách sử dụng "app.get" là gì?

var router = express.Router(); 
router.post('/routepath', function(req, res) {}); 

Bây giờ tôi phải đặt mã định tuyến trong các tập tin khác nhau vì vậy tôi cố gắng sử dụng this cách tiếp cận, nhưng nó là không làm việc có lẽ vì thay vì express.Router() nó sử dụng:

app.post("/routepath", function (req, res) {}); 

Tôi có thể đặt định tuyến trong các tệp khác nhau bằng cách sử dụng express.Router() như thế nào?

Tại sao app.get, app.post, app.delete, vv, không được làm việc trong app.js sau khi sử dụng express.Router() trong họ?

+0

Được hỏi tại http://stackoverflow.com/questions/28305120/differences-between-express-router-and-app-get –

Trả lời

26

Dưới đây là một ví dụ đơn giản:

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

router.get('/', function(req, res) { 
    res.send('Hello from the custom router!'); 
}); 

module.exports = router; 

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

app.use('/routepath', require('./myroutes')); 

app.get('/', function(req, res) { 
    res.send('Hello from the root path!'); 
}); 

Ở đây, app.use() được gắn dụ Router tại /routepath, do đó bất kỳ tuyến đường bổ sung vào Router dụ sẽ được liên quan đến /routepath.

+0

hoạt động tốt cho res.send cảm ơn nhưng chức năng được khai báo trong main.js không thể truy cập được cho Các tuyến đường trong myroutes.js – XIMRX

+1

Nếu bạn đã chia sẻ mã như vậy, hãy đặt mã đó vào một tệp/mô-đun riêng biệt (ví dụ: common.js) và chỉ cần yêu cầu() chúng trong main.js và myroutes.js của bạn (và bất kỳ nơi nào khác) . – mscdex

+0

Express 4.0 không có 'app.router' – Ravi

Các vấn đề liên quan