Как правильно раздедить фронтенд и бекенд в монолитном проекте на php?

Ссылка скопирована
8 января 2026 1 ответ

Здравствуйте уважаемые участники!
Прошу быть снисходителтными к моему вопросу и проявить понимание.

Есть проект на php, проект довольно запутанный и мягко говоря код написан плохо, никакой структуры, повторение кода и много всего, что осложняет процесс разработки.

Поэтому появилась идея проект разделить на два отдельных проекта. Условно назовём их новые фронтенд и бекенд.

Фронт будет на nuxt(vue) - выбран потому что есть опыт работы с ним и важно ssr и seo.
А бекенд на Laravel. Больше потому что тоже php и разработчик сможет изучать логику старого приложения.

Работать они будут как два отдельных приложения. Общение по http.

Так как разом такую штуку не провернешь и весь проект не перести одной итерацией, появилась идея делать это частями.

Сейчас сервер работает как связка ngnix + apache +php.

Поэтому есть возможность на уровне ngnix постранично перенаправлять пользователей на новое приложение фронта - nuxt, которое будет ходить в ларавел за данными.

В общем то вопросы такие. На сколько такое разделение будет правильным? Повлияет ли на Seo? Какие есть ещё варианты, чтобы оптимизировать разработку?

Дополнительно:

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

Если есть возможность, похорони старый проект, сделай разумный. Иначе будет как с кобольтом

  • А что стало с кобольтом?

В свое время мы столкнулись с такой же проблемой - разделить монолит на фронт и бэк отдельно.

Пошли простым путем: выдали на бэке отдельно методы API для фронта, а с фронта работали с ними из CMS, в которой написали свои расширения и ими формировали функционал реализованный ранее лапшекодом.

В дальнейшем фронт был передан третьим лицам на продвижение. В итоге мы сняли с себя этот груз и разграничили таким образом доступ к приватным данным.

Ответы:

Я бы поставил "затычки" в новом приложении ведущие в старое.
Метод не идеальный но позволяет вот прям и сейчас получить новый функционал.
Хотя в общем затраты на переезд будут больше.

Привет скраму и его идеологам.

А насколько большая команда разработчиков? Это я к тому, имеет ли смысл разделение на фронт+бэк? Если и фронт отдельно, и бэк отдельно очень сложные, и работать над ними будут две разные команды, либо будет несколько клиентов (фронт, мобилка, например), то да, определенно стоит разделить. Если же разработчиков немного, а фронт это только веб, я бы смотрел в сторону монолита на Laravel. Благо у него сегодня есть прекрасные инструменты для фронта (Livewire, тот же Vue из коробки). Просто затраты на согласование API, его расширение, апдейты, да и просто коммуникацию между фронтендерами и бэкендерами это довольно сильный тормозящий фактор и значительное усложнение всего. Выкатка одного мелкого изменения начинает затрагивать сразу несколько человек и кодовых баз. Иногда оно просто не стоит того.

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Мария Код Ответ

Для разделения фронтенда и бекенда в монолитном проекте на PHP, можно использовать следующий подход:

1. Структурирование проекта:
- Создайте отдельные директории для фронтенда и бекенда. Например, директория "frontend" для клиентской части и "backend" для серверной части.
- Разделите файлы и компоненты проекта, поместив клиентские файлы (HTML, CSS, JavaScript) в директорию "frontend", а серверные файлы (PHP, базы данных) в директорию "backend".

2. Разделение функциональности:
- Определите, какие функции будут относиться к фронтенду (например, визуальное отображение данных, интерактивные элементы) и какие - к бекенду (обработка запросов, работа с базой данных).
- Создайте API для взаимодействия между фронтендом и бекендом. Например, используйте RESTful API для передачи данных между клиентской и серверной частями.

3. Использование шаблонизаторов:
- Для фронтенда можно использовать шаблонизаторы, такие как Twig или Blade, для удобного отображения данных на стороне клиента.
- Для бекенда можно использовать ORM (Object-Relational Mapping) для удобной работы с базой данных и обработки запросов.

Пример разделения кода между фронтендом и бекендом на PHP:

// frontend/index.html
 
 
 
    <title>Frontend Page</title>
 
 
    <h1>Welcome to Frontend!</h1>
    <button id="getData">Get Data</button>
    <div id="data"></div>

// frontend/index.html <title>Frontend Page</title> <h1>Welcome to Frontend!</h1> <button id="getData">Get Data</button> <div id="data"></div>

// frontend/script.js
document.getElementById('getData').addEventListener('click', function() {
    fetch('http://localhost/api/data')
        .then(response =&gt; response.json())
        .then(data =&gt; {
            document.getElementById('data').innerText = JSON.stringify(data);
        });
});

// frontend/script.js document.getElementById('getData').addEventListener('click', function() { fetch('http://localhost/api/data') .then(response =&gt; response.json()) .then(data =&gt; { document.getElementById('data').innerText = JSON.stringify(data); }); });

// backend/index.php
 'John Doe', 'age' =&gt; 30];
echo json_encode($data);
?&gt;

// backend/index.php 'John Doe', 'age' =&gt; 30]; echo json_encode($data); ?&gt;

Таким образом, разделяя фронтенд и бекенд в монолитном проекте на PHP, вы сможете улучшить структуру проекта, упростить поддержку и развитие кода, а также повысить его масштабируемость.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно