Я имею экспресс на бэкэнд и реагирую на фронтэнд, но у меня также есть страница администратора, работающая над шаблоном мопса, как я могу запустить его на одном домене - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть экспресс на back-end и response.js на внешнем интерфейсе, но у меня также есть страница администратора с механизмом просмотра pug, работающая на экспресс-маршрутах, как я могу использовать их в одном домене

1 Ответ

0 голосов
/ 03 апреля 2019

Expressjs очень хорошо компонуется.У вас может быть экспресс-приложение верхнего уровня, которое направляется к суб-экспресс-приложениям и обслуживает ваши отдельные сервисы.

Допустим, вы хотите обслуживать ваш интерфейс взаимодействия с www.example.com, а ваш админ (просмотр мопса) с www.example.com/admin, и вы также хотите иметь API, который будет обслуживать интерфейс по адресу www.example.com/api`.

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

// This parent app acts as a parent layer and router
// for all your "sub apps". Any middleware you apply
// to this express app will apply to *all your other
// sub-apps*.
const parentApp = express();

// We now create another express instance, this will
// house the API. It can be in another file and you
// could require in something like "require('api');"
// instead but for brevity we'll keep it all in one
// file.
const apiApp = express();
apiApp.get('/info', (req, res, next) => {
    console.log('/info');
    return res.sendStatus(200);
});

// Mount the sub app on the /api route. This means
// you can how hit 'www.example.com/api/info' and
// you'll get back a 200 status code.
parentApp.use('/api', apiApp);

// Now we setup the admin app which we'll add pug
// views into. This is an example so just pretend
// the views exist.
const adminApp = express();
adminApp.set('views', './views');
adminApp.set('view engine', 'pug');
adminApp.get('/login', (req, res, next) => {
    return res.render('login', { title: 'Hey' });
});

// Mount the sub app on the /admin route. This way
// we can hit www.example.com/admin/login to get
// our login page rendered.
parentApp.use('/admin', adminApp);

// Now we create and mount the frontend app that
// serves our fully built react app. You could do
// this with nginx instead but you wanted to do
// it with express so lets do it that way.
const frontendApp = express();
frontendApp.use(express.static('/frontend));

parentApp.use('/', frontendApp);

Если вы не хотите создавать себе экспресс-приложение верхнего уровня (и, таким образом, создавать немного монолитного приложения)тогда я бы порекомендовал проверить документацию по nginx или документацию по используемому вами HTTP-серверу.У вас должна быть возможность направлять запросы к конкретным конечным точкам различным узлам приложений, работающих на разных портах.Статические файлы могут затем обслуживаться вашим сервером HTTP.Это определенно более эффективный и элегантный подход, но так как вы спросили о экспрессе, я хотел продемонстрировать этот подход в первую очередь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...