@Terebbbon
My name is Alex

Каким образом взаимодействует сегодня Back-End и Front-End?

Доброго времени суток. Уже очень давно работал в веб-деве на фрилансе. Ранее все сайты писались по сути следующим образом: есть front и PHP. PHP с помощью функции echo отрисовывает html-элементы + свои данные из бд или еще где-то. По сути мы каждый раз перезагружаем страницу после такого запроса. Также для решения проблемы перезагрузки у нас был Ajax, который по сути давал возможности отправлять запросы через JS без перезагрузки.
Однако недавно решил попробовать вернуться в уже знакомую мне сферу, но встретил большие сложности с пониманием работы нынешних веб-приложений. По сути любое современное веб-приложение работает следующим образом: front и back общаются между собой HTTP запросами (фронт кидает request, получает response и обмениваются между собой JSON'om)??; то на JS с помощью условного React'a мы делаем HTTP запрос на сервер (где условно PHP), то PHP только лишь обрабатывает запрос, работает с БД и высылает готовые значения в JSON, которые уже отрисовывает на фронте React? По сути единственная задача бэка: направить JSON файл с необходимой инфой и все? В чем преимущество такого подхода? Не только ведь отсутствием перезагрузки...

Заранее спасибо за ответ и потраченное на него время :)
  • Вопрос задан
  • 2275 просмотров
Пригласить эксперта
Ответы на вопрос 1
Zraza
@Zraza
Помог ответ? Отметь решением!
Нет, не все сайты работают так (с разделением на фронт/бэк) - некоторые по-старинке. И не всегда новый подход оправдан.
В основном имеет смысл там, где много интерактива - при старом подходе все равно приходится делать апи для всяких lazy-load/поиска/фильтрации, решать где/как будут хранится шаблоны, в каком формате передавать и пр. При новом подходе за все это отвечает фронт, бэк предоставляет только данные.

  • Чаще всего используется http+json для взаимодействия фронт-бэк, но есть варианты.
  • С помощью React мы запрос не делаем. React это что-то вроде продвинутого шаблонизатора. Запрос мы делаем через js (browser api). Бэк только отдает json.


Преимущества:
  1. Можно разделить работу фронт и бэк команд
  2. Можно переписать фронт/бэк, используя интерфейс API как контракт взаимодействия
  3. Между фронтом и бэком бегают чисто данные, без шаблонов. Но см. п. 3 недостатков.
  4. Перенос нагрузки с бэка на фронт (редко это оправдано, но все же).
  5. Интерфейс становится более отзывчивым (если делать все хорошо)
  6. Проще протестировать поотдельности


Недостатки:
  1. Больше кода, больше компетенций, сложнее система
  2. Проблемы с индексацией, задейсвуются смешанные варианты (SSR)
  3. Размер кода на фронте, больше нагрузка на устройства


Наверняка не все перечислил - то, что быстро пришло на ум.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы