Как происходит организация связи клиент-сервер при использовани js-фреймворков?

Здравствуйте! Давно задаюсь вопросом - как происходит разработка one page приложения в реальном мире? У меня есть несколько идей по поводу проектов, хотелось бы потренироваться в backbone и laravel в связке, но не совсем понимаю как лучше организовать связь клиент - сервер.
Самый главный вопрос, который я постоянно себе задаю - каким образом рендерить виды? В моем понимании, мы создаем контроллер на роут, который просто напросто отдает json с данными для коллекций .
Хотелось бы услышать советы не только на этот счет, но и вообще про ваши техники подхода к таким проектам. Спасибо!
  • Вопрос задан
  • 293 просмотра
Пригласить эксперта
Ответы на вопрос 3
alexey-m-ukolov
@alexey-m-ukolov Куратор тега Laravel
каким образом рендерить виды?
На стороне клиента, разумеется, в этом весь смысл SPA.

В моем понимании, мы создаем контроллер на роут, который просто напросто отдает json с данными для коллекций.
Помимо отображения данных ими еще нужно манипулировать. Начните с создания rest-api.
Ответ написан
vawsan
@vawsan
Frontend Developer
На данный момент связь чаще всего происходит через xmlHttpRequest.
Упомянутой вами trello работает на websocket.

Или вы имели ввиду концепцию реакций на изменения клиента/приход новых данных с сервера?
Тогда приложение требует двусторонней связанности(т.е. клиент дергает сервер и сервер клиент), то webSocket и ему подобные событийные модели. Либо обновление, основанное на таймерах и простом аяксе - но это оправдано в очень малом количестве ситуаций.

Если приложение не использует реакции клиента на изменение данных на сервере, то постоянное поддержание активного соединения вам не нужно, и в ход идет простой ajax. Получили ответ - обновили модель - сгенерировали запрос - получили ответ - и т.д по кругу.
Ответ написан
Комментировать
atlantech
@atlantech
Full Stack Software Developer
В принципе Вы правы, сервер будет отдавать json-данные, в качестве исключения могут быть html-формы. На клиенте вам нужно будет отслеживать клики по ссылкам и тригерить бэкбоновские роуты, например:
$('a:not([data-default])').on('click', function(e) {
        e.preventDefault();

        // код упрощен для понимания, необходимо проверить, не находимся ли мы на текущем роуте
        // или существует ли вообще такой роут 
        router.navigate(link.pathname);
});


В роутере вы сможете создать модель и запросить данные с сервера, затем отрисовать вашу страницу. Рекомендую обратить внимание на библиотеку marionettejs.com/. Она добавляет пользные компоненты, например Marionette.Behavior, CompositeView, регионы, биндинг UI элементов, что поможет, если вам все-таки придётся передавать html.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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