Задать вопрос
@OrangeKeks

Как frontend и backend соединяют в единый проект?

Здравствуйте.
Объясните, пожалуйста, как соединяют backend с frontend. У меня есть backend, написанный на Web-API C#, и Frontend часть (html+css+javascript). Как мне их правильно соединить? Backend часть должна отдавать файлы для клиента (frontend)? Или frontend и backend размещены разными программами?
Спасибо.
  • Вопрос задан
  • 489 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 4
ThunderCat
@ThunderCat Куратор тега Веб-разработка
{PHP, MySql, HTML, JS, CSS} developer
Как мне их правильно соединить?
Во первых - зачем? Смысл разноса api и приложения в том что бэк работает одинаково со всеми запросами (не особо важно кто и как их дергает, лишь бы права позволяли), а фронт не зависит от бэка в представлении. По этому фронт пишется как морда на каком-нибудь реакте, который от бэкенда получает данные по запросу. Нужно авторизоваться - стучишся в эндпоинт авторизации, отдаешь креденшелы, получаешь токен. Нужно список юзеров - берешь доку по апи, стучишся с нужным пэйлоадом на эндпоинт, получаешь жсон списка, из него рисуешь что хочешь...
Во вторых -
Или frontend и backend размещены разными программами?
что-то мне подсказывает что наверное вы рановато по знаниям взялись за задачу...
Ответ написан
Комментировать
@rPman
фронтэнд - это приложение (html+css+javascript) для веб-браузера, запускается у пользователя, оно должно быть создано таковым, что бы делать запросы к бакэнду

бакэнд - это приложение (другое), запускаемое на сервере, которое обеспечивает функцианирование всей системы (но бывает оно не единственное). Обычно бакэнд состоит из готового веб сервера (например nginx/apache или майкрософтовский IIS , который выполняет большую часть рутинных операций, включая отдачу статичных файлов, те самые html, css, javascript, точнее те что не меняются в процессе работы приложения) и приложения/модуля (php или к примеру майкрософтовский asp.net), который отдает динамический контент - файлов, содержимое которых меняется в зависимости от запроса фронтэнда.

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

Разделяют два подхода к реализации всего веб-приложения (обычно это не тригер а нестрогий выбор, типа 'немного первого подхода и в основном второго'):
1. на каждое действие пользователя (клик по разным страницам сайта и элементам интерфейса типа меню) бакэнд заново формирует html (и по необходимости все остальное) а веб браузер это отображает.
В этом подходе javascript не требуется, браузер практически не тратит ресурсы, но тратятся ресурсы сервера и нагружается сеть между ними.
2. все что касается интерфейса реализуется на javascript в браузере, html формируется на javascript, но данные и операции, отсылаются на сервер к бакэнду в виде относительно небольших (по сравнению с html интерфейса) файлов-запросов (формат и структуру этих запросов часто приходится разрабатывать самостоятельно, но есть хелперы).
Исторически сложилось, что данные от бакэнда удобнее передавать в текстовом виде в формате .json, а вот от фронтэнда к бакэнду исторически отправляют в виде multipart/form-data (то что отправляет на сервер html конструкция из тегов form, input, textarea и т.п.). Но это естественно не обязательные требование, и ничто не мешает и с клиента отправлять запросы в виде json, а так же вместо json использовать свой формат, например в браузер (и его javascript) встроено куча инструментов для отправки бинарных данных (например XMLHttpRequest).

Очень много ограничений и требований накладывает выбор среды разработки, например при использовании visual studio asp.net, все будет завязано на майкрософтовскую инфраструктуру, начиная с деплоя и кончая собственно работы бакэнда.. Но как бонус, я отчетливо помню (при использовании WinForms) приложение для веб разрабатывалось точно так же как для десктопа, с очень небольшими отличиями, и при этом это работало в браузере (если честно отвратительно, но кто сейчас смотрит на качество реализации).

p.s. есть еще старый но все еще рабочий способ, формирования страницы на клиенте с помощью xslt (это язык шаблонизатор для получения html), а сервер отправляет xml файл с данными. Можно упороться и реализовать все на таких шаблонах, что они не будут требовать javascript но работать все будет на стороне клиента с очень эффективной тратой ресурсов как сервера так и сети.
Ответ написан
@Vazilin
Заморочили голову людям этим докером и избыточным разделением, что даже простой сайтик визитку уже надо раскидывать на бэк фронт и бд в разные докеры.
Долой буржуазные методы!
Да здравствует монолит!
Ответ написан
Комментировать
Digiport
@Digiport
PHP рулит
Из javascript в frontend нужно делать запросы к эндпоинам на backend и результат визуализировать на frontend.
Вероятно, frontend должен отдаваться браузеру с помощью nginx, apache2 или своими средствами, если реализован в NodeJS, например. Web-api у вас, видимо, работает на своём порту и вам нужно делать запрос к этому API через определённый порт. Можно через Nginx проксировать на другой, удобный вам порт, если есть такая необходимость.
У вас frontend с backend взаимодействуют через ajax или websocket? Разберитесь поглубже в архитектуре вашего проекта.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы