У браузера есть history api с помощью которого можно отслеживать переход по страницам и вместо того, чтобы запрашивать страницу с сервера - сделать запрос, получить JSON-данные и отрендерить страницу прямо на клиенте.
Такие приложения называют SPA и для их разработки используют фреймворки - react (не библиотека, а вместе с инфраструктурой), angular2, ember.
Сервер в этом случае выглядит как REST API (отдает JSON данные) и может быть реализован на чем угодно. Обычно это PHP (symfony2\laravel\yii\...), nodejs, Java (spring MVC), go, ruby и так далее. В зависимости от задач.