Почему фронтенд должен оставаться «тупым»
Сегодня у вас бэкенд на PHP и Laravel, а завтра бизнес решает переписать всё на микросервисы на Go. Для грамотно спроектированной системы это не должно стать катастрофой.
Фронтенд вообще не должен знать, какая магия происходит на сервере. Для него бэкенд — это «черный ящик».
Всё, что их связывает — это API. Это жесткая договоренность, контракт: «Я присылаю тебе вот такой Payload на этот адрес, а ты возвращаешь мне статус-код и конкретную структуру данных». Если этот контракт соблюдается, вы можете менять внутренности бэкенда как перчатки, и фронт этого даже не заметит.
Фронтенд — это просто интерфейс.
Его задача: собрать данные из полей, упаковать их в запрос, отправить «в офис» и отрисовать то, что прилетело в ответ. Как только вы начинаете переносить бизнес-логику на клиент, вы открываете ящик Пандоры.
Поймите одну вещь: фронтенд — это публичное место. Это как если бы вы обсуждали детали секретной сделки на оживленной площади. Любой браузерный плагин, левый скрипт или просто пользователь с открытыми DevTools может влезть в код вашего приложения.
На клиенте нельзя доверять ничему.
Иногда велик соблазн посчитать скидку прямо в JavaScript — это же быстро, не нужно ждать ответа от сети. Но как только вы отправляете на бэкенд уже «готовый» результат, вы отдаете контроль над деньгами в руки пользователя. Любой, кто умеет нажать F12, может легким движением руки превратить свою скидку в 90% или вообще отправить отрицательную цену.
Инженерный подход в том, чтобы держать логику там, где она защищена — на бэкенде. Фронт только транслирует намерения пользователя («я хочу купить этот товар»), а бэкенд уже решает, сколько это стоит и есть ли у пользователя на это права.
Когда в конце месяца у бизнеса не сойдутся счета из-за того, что кто-то подкрутил параметры в запросе, разницу, скорее всего, придется закрывать вам. Поэтому не пытайтесь облегчить себе жизнь за счет безопасности системы. Разделяйте ответственность: бэкенд считает, фронтенд показывает.
Если что-то всё ещё звучит запутанно — пиши вопросы в комментах, я обязательно отвечу. А если всё разложилось по полочкам — ставь 🔥, так я пойму, что пост был полезен
10МДК
Post #38
83

- 🔥 5
- ❤ 2