设置三个express实例:admin、site和app



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

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

parentApp负责运行站点,另外两个负责分离adminblog

我试着更进一步,但代码完全是面条。所以…

我试着做同样的事情,以了解如果我需要的话,我如何使用这个配置。。。

首先,我创建了一个名为app.js的主要实例,以及另外两个"次要"实例:site.jsadmin.js

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

现在问题来了:

网站或管理员没有运行,我想知道如何让它运行。我必须创建一个服务器并同时监听这些实例?

这真的让我很困惑,因为我查看了他们的代码,但根本找不到,因为他们只在parentApp上监听,仍然导致网站识别其他实例的路由、中间件等。

谢谢你,很抱歉我的英语不够好,我已经尽力了。

我不知道这是否是您想要的,但您可以像使用任何其他中间件一样使用express。有人可能会在这个例子上有所改进,但请看一看。我创建了一个开箱即用的express应用程序,然后添加了另一个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' });
});

最新更新