Просто выберите концепцию:
1. Тонкий клиент. Все рисует сервер, клиент лишь берет на себя чисто визуальные штучки, вроде анимаций, переключений элементов и т.п.
2. Толстый клиент. Сервер передает клиенту только данные через Rest API. Желательно наличие на стороне клиента како-то фреймворка (эмбер, ангуляр и т.п.)
Имейте в виду, что толстый клиент или SPA не имеет смысла сам по себе, ну разве что вы уже их сотню сделали и вам ничего не стоит сделать еще один. Он имеет смысл тогда, когда ваш сервер одновременно работает на приложения для разных платформ (смартфоны, планшеты и десктоп). В таком случае проще сделать единый сервер и общий Rest API, через который разные клиенты будут получать данные.
Делать такое для одного сайта, по сути лишняя работа.