Хотя на самом деле нет однозначного ответа, так как это зависит.
Если вы хотите, чтобы поисковая система сканировала, вы можете НЕ полагаться только на обработку на стороне клиента. Если ваши индивидуальные представления невелики и / или вам нужна поддержка мобильных устройств, у вас должен быть начальный рендеринг на стороне сервера.
В настоящее время я бы предложил использовать API, который может использовать как ваше клиентское приложение, так и серверная часть. Если вы используете узел для рендеринга на стороне сервера, вы можете повторно использовать большую часть той же логики, включая клиент API.
Если продвинуться на несколько шагов дальше, если вы посмотрите, начиная с проекта примеров потоков Yahoo на github, вы можете использовать ту же логику как на стороне клиента, так и на стороне сервера, включая рендеринг с представлениями React. Это не простое решение, и потребует некоторой работы.
Для интерактивных элементов рендеринг на стороне сервера может быть минимальным, если ваши магазины запускают передачу событий через sockjs / socket.io, когда клиент запускает биты chat / im.
У вас будут проблемы с масштабируемостью, когда речь идет о работе с несколькими процессами, и вам, вероятно, понадобится цепочка пабов / подчиненных, поддерживаемая БД, для более длительных циклов повторного подключения или пропущенных сообщений IM. Там нет волшебной пули.
Прямо сейчас мне нравится flux + реагировать ... Когда выйдет Angular2, он может иметь лучшую историю для рендеринга на стороне сервера.