设置三个快递实例:管理员,网站和应用

时间:2015-02-12 20:11:12

标签: javascript node.js express middleware ghost-blog

朋友们,我认为自己是中级的javascript程序员,但这些问题听起来很业余,原谅我。

我在Ghost.org博客平台(CMS)中做了逆向工程..尝试了解他们是如何做到的,我发现他们有三个express()实例:parentApp,blogApp和adminApp。 / p>

parentApp负责运行网站,其他两个用于将adminblog分开。

我试图更进一步,但代码是一个全面条。所以......

我试图做同样的事情来了解如果我需要的话我该如何使用这个配置...

首先,我创建了一个名为app.js的主要实例,以及其他“次要”两个:site.jsadmin.js

我已经设置了模板引擎,每个人都有自己的视图的文件夹,并发送app实例来监听端口3000(像往常一样)。

现在出现了问题:

网站或管理员没有运行,我想了解如何让它运行。我必须创建一个服务器并听取这些实例吗?

这让我感到很困惑,因为我查看了他们的代码并且根本无法找到,因为他们只是在parentApp上进行监听,并且仍然导致该网站识别其他实例的路由,中间件等。

谢谢你,我很抱歉,我不是完美的英语,我尽我所能。

1 个答案:

答案 0 :(得分:4)

我不知道这是否是你所追求的,但你可以像任何其他中间件一样使用express。有人可能能够改进这个例子,但看一看。我创建了一个开箱即用的快递应用程序,然后只添加了另一个快速实例作为中间件。我删除了除了基本要素以外的所有内容以使其可读。

var express = require('express');
var path = require('path');

var routes = require('./routes/index');
var users = require('./routes/users');
var adminRoutes = require('./admin/routes/index');

var app = express();
var admin = express();
admin.use('/', adminRoutes);

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
admin.set('views', path.join(__dirname, 'admin/views/'));
admin.set('view engine', 'jade');

app.use(express.static(path.join(__dirname, 'public')));

app.use('/', routes);
app.use('/users', users);

app.use('/', admin);

module.exports = app;

在admin / routes / index.js中,我创建了一条到" / admin"的路由。

router.get('/admin', function(req, res, next) {
    res.render('index', { title: 'Express Admin' });
});