2012-01-27 18 views
28

Utilizzando l'ultimo node.js stabile ed espresso da npm, ho creato il mio primo progetto express.Modo corretto per organizzare myapp/routes/*

L'applicazione generata di default definisce routes/index.js, che contiene una singola route che rende la vista indice predefinita.

Ho subito pensato che avrei potuto aggiungere altri file .js alle rotte/cartella e sarebbero stati inclusi. Questo non ha funzionato. Solo route/index.js è sempre incluso. L'aggiunta di percorsi aggiuntivi a route/index.js funziona correttamente.

Qual è il modo corretto di definire e organizzare percorsi Express, seguendo la struttura fornita dal generatore di progetto rapido?


La risposta, parafrasando l'articolo a DailyJS:

Dati i seguenti percorsi:

app.get('/', function() {}); 
app.get('/users', function() {}); 
app.get('/users/:id', function() {}); 

... creare i seguenti file:

routes/ 
├── index.js 
├── main.js 
└── users.js 

Poi, all'interno di route/index.js:

Per ogni nuovo gruppo di percorsi correlati, creare un nuovo file in routes/e require() da routes/index.js. Usa main.js per percorsi che non si adattano veramente agli altri file.

risposta

18

Preferisco caricare dinamicamente i percorsi invece di dover aggiungere manualmente un altro richiede ogni volta che si aggiunge un nuovo file di percorso. Ecco cosa sto attualmente usando.

var fs = require('fs'); 

module.exports = function(app) { 
    console.log('Loading routes from: ' + app.settings.routePath); 
    fs.readdirSync(app.settings.routePath).forEach(function(file) { 
     var route = app.settings.routePath + file.substr(0, file.indexOf('.')); 
     console.log('Adding route:' + route); 
     require(route)(app); 
    }); 
} 

Io lo chiamo quando l'applicazione viene caricata, che quindi richiede tutti i file nel percorsoPath. Ogni percorso è configurato come la seguente:

module.exports = function(app) { 
    app.get('/', function(req, res) { 
     res.render('index', { 
      title: 'Express' 
     }); 
    }); 
} 

Per aggiungere più percorsi, tutto quello che dovete fare ora è aggiungere un nuovo file alla directory routePath.

+0

È il tuo primo blocco di codice nel tuo 'app.js' o come'./Router/index.js'? –

Problemi correlati