@startproger

Как правильно реализовывать фронтэнд в 2021?

Backend пишу на Symfony, а вот Frontend для меня ограничивается только Twig + jQuery.

Когда появляется необходимость в работе с динамическими сущностями, которые должны обновляться без обновления страницы (например, комментарии), начинают вырастать костыли: для комментариев нужно сделать шаблон в Twig, который их выводит в момент загрузки страницы, и "шаблон" в JS, формирующий их вывод во время добавления/изменения через Ajax.

Чувствую, в 2021 это уже неправильный подход.

Расскажите пожалуйста, как правильно (модно, современно) реализовывать фронтэнд сайтов сейчас?

Или вообще "клиент" должен существовать отдельно от "сервера", не иметь ничего общего с PHP и быть на JS, и, быть может, на фреймворке типа Vue/React?

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

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

Спасибо, буду благодарен за любые советы и подсказки, особенно развернутые, они мне очень помогут чуть-чуть углубиться и понять, что сейчас происходит на стороне клиента.
  • Вопрос задан
  • 270 просмотров
Решения вопроса 4
myks92
@myks92
Нашёл решение — пометь вопрос ответом!
В современном мире действительно стоит разделять backend и frontend. Везде есть свои фреймворки которые стоит использовать для облегчения разработки. Бакенд обычно имеет только api и этого бывает достаточно. А шаблонизатор twig применяют в этом случае для email писем.

Frontend сейчас разнообразен. Это сейчас больше чем CSS+HTML и небольшой функционал на JS. Более того на Frontend сейчас тоже можно делать микросервисы. Одна страница может работать сразу на нескольких JS фреймворках. Например, меню на Vue, а Navbar на ReactJS.

С точки зрения поддержи и развития вы тоже проигрываете. Ведь большой проект требует узких специалистов, в том числе и фронтенд. Если Ваш фронтенд будет на PHP, то на фронтент уже потребуется фул стек разработчик, что дороже и проблематичнее. Значит сложнее масштабирование и развитие. Да и возникают проблемы монорепозитория, куда все изменения с frontend и backend поступают в один репозиторий, без возможности отделения их. Таким образом ко всем разработчикам сразу попадает готовый проект, который легко скопировать и украсть.

Поэтому, если ваш фронт слишком сложный, то его следует отделить. Иначе вам придётся столкнуться с множеством проблем, зависимостью и сложностью как проекта, так и репозитория.
Ответ написан
Комментировать
@karminski
Senior React.JS Developer
Ну в целом вы сами ответили на свой вопрос - React или Vue или их братья меньшие прекрасно справляются с приготовлением фронта. Вопрос в том, какой тип "приложения" вы пишите. React/Vue все еще пока не очень дружат с SEO (сейчас меня закидают тапками, но это мое мнение, я его никому не навязываю), поэтому на них хорошо делать фронт для мобильного приложения или фронт админки/cms/erp и т.п. Для классического веб-сайта (сайт компании, школы, сообщества), которому важно SEO - фронт лучше писАть "по-старинке".
Ответ написан
veryoriginalnickname
@veryoriginalnickname
У меня например бекенд на node.js. Там есть пути, типа:
GET "/articles" - получить записи
GET "/articles/:id" - получить одну запись
POST "/articles" - создать запись
POST "/articles/:id" - редактировать запись
DELETE "/articles/:id" - удалить запись
Далее в Vue есть интерфейс создания статьи. Допустим пишешь статью, и одновременно с этим (по событию input) Axios посылает POST на "/articles/:id" (автосохранение), далее приходит код 200, и все прекрасно.
В общем разделение простое: на бекенде есть точки, типа "/articles" и "/articles/:id", и что делать с статьей определяет метод, типа POST или GET. А фронт посылает запросы через Axios (можно и через Fetch, но там нет перехватчиков, что важно для админ-панели) на эти точки, получает ответ, и далее в зависимости от ответа как-то реагирует.
Ответ написан
Комментировать
@haveacess
По опыту действительно лучше не смешивать, на выходе получается ужас который нужно еще и поддерживать.
Если что сравниваю мешанину с Jquery + PHP или Vue для фронта. Слишком большие проекты не писал, но имея уже текущий опыт могу сказать что это небо и земля. Vue js на фронте чувствует себя прекрасно, ну а данные для рендера берем с бэка по API и парсим json.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
27 июн. 2022, в 07:01
3000 руб./за проект
27 июн. 2022, в 06:41
5000 руб./за проект
27 июн. 2022, в 04:23
2000 руб./за проект