如何在不同模块中分隔路由并使用一行代码进行初始化?

时间:2016-07-14 18:50:41

标签: javascript node.js express

什么和为什么

我想要以下内容的一些背景知识。首先,我想创建一个网站和一个内容管理系统。我想在两个模块(网站和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'
                });
            }
        }
    ]
}

无法获取/

我认为我在routes / website / index.js文件中做错了。当我去localhost:3000时,我收到以下消息'无法获取/'。

1 个答案:

答案 0 :(得分:0)

我认为你必须将app传递给路由或返回路由表并将其加入app

routesWebsitePages.initialize(app);

app.use(routesWebsitePages.initialize());