Как происходит организация связи клиент-сервер при использовани js-фреймворков?
каким образом рендерить виды?На стороне клиента, разумеется, в этом весь смысл SPA.В моем понимании, мы создаем контроллер на роут, который просто напросто отдает json с данными для коллекций.Помимо отображения данных ими еще нужно манипулировать. Начните с создания rest-api.
В принципе Вы правы, сервер будет отдавать json-данные, в качестве исключения могут быть html-формы. На клиенте вам нужно будет отслеживать клики по ссылкам и тригерить бэкбоновские роуты, например: $('a:not([data-default])').on('click', function(e) {
        e.preventDefault();

        // код упрощен для понимания, необходимо проверить, не находимся ли мы на текущем роуте
        // или существует ли вообще такой роут 
        router.navigate(link.pathname);
});
В роутере вы сможете создать модель и запросить данные с сервера, затем отрисовать вашу страницу. Рекомендую обратить внимание на библиотеку marionettejs.com/. Она добавляет пользные компоненты, например Marionette.Behavior, CompositeView, регионы, биндинг UI элементов, что поможет, если вам все-таки придётся передавать html.