2015-02-12 6 views
3

Друзья, я считаю себя javascript-программистом на промежуточном уровне, но эти вопросы будут звучать любительскими, простите меня.Настройка трех экземпляров выражений: admin, site and app

Я занимался обратным инженером в блоге плагинов Ghost.org (CMS) .. пытаясь понять, как они это сделали, и я обнаружил, что у них есть три экземпляра express(): parentApp, blogApp и adminApp.

parentApp несет ответственность за запуск сайта, а два других - для отдельных admin и blog.

Я попытался пойти дальше, но код - это полная лапша. Так что ...

Я попытался сделать то же самое, чтобы понять, как я могу использовать эту конфигурацию, если я когда-нибудь понадобится ...

Сначала я создал крупный экземпляр под названием app.js, и другие «незначительные» два: site.js и admin.js.

Я установил механизм шаблона, папку, в которой каждый из них будет иметь свои просмотры, и отправил экземпляр app для прослушивания на порту 3000 (как обычно).

Теперь возникает проблема:

сайта или администратор не работает, и я хочу, чтобы узнать, как сделать его запустить. Мне нужно было бы создать сервер и послушать эти экземпляры тоже?

Это действительно озадачило меня, потому что я просмотрел их код и просто не смог найти, как они это делали, чтобы слушать только на parentApp и по-прежнему заставлять сайт распознавать маршруты, промежуточное ПО и т. Д. Других экземпляров.

Спасибо, и я сожалею о том, что не совершенен английский, я сделал все возможное.

+0

Где находится ваш 'app.listen (port);'? – Luc

ответ

3

Я не знаю, если это то, что вам нужно, но вы можете использовать экспресс, как и любое другое промежуточное программное обеспечение. Кто-то может улучшить этот пример, но взгляните. Я создал готовое экспресс-приложение, а затем добавил еще один экспресс-экземпляр в качестве промежуточного программного обеспечения. Я убрал все, кроме основных вещей, чтобы сделать его доступным для чтения.

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' }); 
}); 
+0

Да, это то, что я хочу! Благодаря!! –

+0

Рад, что это было то, что вы искали. :-) – HeadCode