2014-05-12 11 views
25

Ho un app con codice seguente per il routing:Qual è la differenza tra "express.Router" e il routing utilizzando "app.get"?

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

Ora devo mettere il codice di instradamento in file diversi così ho provato ad usare this approccio, ma è non lavoro forse perché invece di express.Router() esso usa:

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

Come posso mettere il routing in file diversi utilizzando express.Router()?

Perché app.get, app.post, app.delete, ecc, non si lavora in app.js dopo aver usato express.Router() in loro?

+0

Alla domanda http://stackoverflow.com/questions/28305120/differenze-tra -prodotto-espresso-e-app-get –

risposta

26

Ecco un semplice esempio:

// 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!'); 
}); 

Qui, app.use() sta montando l'istanza Router a /routepath, in modo che eventuali percorsi aggiunti all'istanza Router saranno relativi a /routepath.

+0

funziona perfettamente per la ris .viavia ma le funzioni dichiarate in main.js non sono accessibili per percorsi in myroutes.js – XIMRX

+1

Se hai codice condiviso come quello, allora metti quel codice in un file/modulo separato (es. common.js) e semplicemente richiedi() nel tuo main.js e in myroutes.js (e in qualsiasi altro posto) . – mscdex

+0

Express 4.0 non ha 'app.router' – Ravi

Problemi correlati