2016-07-14 3 views
0

Что и почемуКак я могу разделять маршруты в разных модулях и инициализировать одной строкой кода?

Немного предыстории, почему я хочу следующее. Прежде всего, я хочу создать веб-сайт и систему управления контентом. Я хочу отделить свои маршруты в двух модулях (веб-сайт и CMS), потому что я нахожу его более чистым кодом и более удобным для обслуживания в будущем. В моем файле app.js/server.js я хочу инициализировать эти маршруты одной строкой кода: 'routeWebsitePages.initialize()'.

Я сделал следующее:

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); 

маршруты/сайт/index.js

var express = require('express'); 

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

маршруты/сайт/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' 
       }); 
      } 
     } 
    ] 
} 

не может получить/

Я думаю, что я сделал что-то неправильно в маршрутах/сайт/index.js файл. Когда я перехожу на localhost: 3000, я получаю следующее сообщение «Can not GET /».

ответ

0

Я думаю, что вы должны передать приложение к маршрутам или вернуть таблицу маршрутов и присоединиться к нему к приложению

routesWebsitePages.initialize(app); 

или

app.use(routesWebsitePages.initialize()); 
Смежные вопросы