Lumen - обслуживание проекта ReactJS

Я работаю над приложением Lumen / React для проекта. Очевидно, что Lumen предоставляет API, а React создает пользовательский интерфейс. Теперь я пытаюсь обслуживать свое приложение React через Lumen, чтобы оно могло взять на себя всю работу с пользовательским интерфейсом.

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

Lumen - обслуживание проекта ReactJS

Как видите, в настоящее время приложение React является подпапкой репозитория. Это то, что я делал с предыдущими проектами Koa, однако из-за характера веб-сервисов Nodejs это значительно упростило обслуживание этих файлов.

Судя по результатам моего тестирования, я считаю, что лучший способ обслуживания файлов - это прочитать содержимое index.html из клиентской папки, либо / build, либо / public, в зависимости от того, включено ли производство. Затем мне нужно будет перенаправить запросы ресурсов за пределы общей папки, установленной веб-сервером, в / build или / src в клиентской папке, опять же, в зависимости от того, находится ли он в производстве.

Мои вопросы:

A) Возможно ли это безопасным и надежным способом?

Б) Это лучший способ обслуживания приложения React через Lumen?

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

Dominic 09.12.2018 13:00

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

Thomas Smyth 09.12.2018 13:28
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
2
1 080
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Возможно, не самое приятное решение, но я просто написал свои собственные сценарии для развертывания собранной версии в файлах Lumen после запуска сценария сборки.

Разработка может быть выполнена с помощью прокси-сервера React.

const copydir = require('copy-dir');
const fs = require('fs');

copydir.sync('./build', '../public');

fs.readFile('./build/index.html', 'utf8', function (err, data) {
    if (err) throw err;
    fs.writeFile ('../resources/views/index.php', data, function(err) {
        if (err) throw err;
    });
});

Другие вопросы по теме