2016-07-14 3 views
0

Was und warumWie kann ich Routen in verschiedenen Modulen trennen und mit einer Codezeile initialisieren?

Ein wenig Hintergrund, warum ich die folgende wollen. Zuallererst möchte ich eine Website und ein Content-Management-System erstellen. Ich möchte meine Routen in zwei Module (die Website und CMS) trennen, weil ich es sauberer Code finde und für die Zukunft wartungsfreundlicher bin. In meiner app.js/server.js-Datei möchte ich diese Routen mit einer Codezeile initialisieren: 'routeWebsitePages.initialize()'.

habe ich folgendes:

server.js

var express = require('express'); 
var nunjucks = require('nunjucks'); 
var routesWebsitePages = require('./routes/website/pages.js'); 

var app = express(); 

app.use(express.static('./assets')); 
app.use(express.static('./node_modules/material-design-lite')); 

nunjucks.configure('views', { 
    autoescape: true, 
    express: app 
}); 

routesWebsitePages.initialize(); 

app.listen(3000); 

Routen/website/index.js

var express = require('express'); 

module.exports = { 
    router: express.Router() 
} 

Routen/website/pages.js

var modules = require('./index.js'); 

module.exports = { 

    initialize: function() { 
     this.routes.forEach((item) => { 
      modules.router.route(item.path).get(item.action); 
     }); 
    }, 

    routes: [ 
     { 
      path: '/', 
      action: function (req, res, next) { 
       res.render('index.html', { 
        // Data to send to index.html 
        'helloWorld': 'Hello World' 
       }); 
      } 
     } 
    ] 
} 

Kann nicht GET/

Ich glaube, ich etwas falsch in der Routen/Website/index.js Datei getan haben. Wenn ich zu localhost: 3000 gehe, erhalte ich die folgende Nachricht 'Can not GET /'.

Antwort

0

Ich glaube, Sie App Routen passieren muss oder Routentabelle zurückkehren und kommen Sie es

routesWebsitePages.initialize(app); 

oder

app.use(routesWebsitePages.initialize()); 
App
Verwandte Themen