History.js - это скорее полифиль для браузеров, которые изначально не поддерживают pushState в HTML5, и для устранения различий между различными реализациями pushState в браузерах.
Davis.js - это слой маршрутизации, в основном поверх pushState (хотя это можно легко переключить на хеш-маршрутизацию). Он дает вам простой API для определения и реагирования на маршруты в вашем приложении.
Маршрутизатор Backbone аналогичен Davis, однако он пытается автоматически переключиться на маршрутизацию на основе хэша, когда pushState недоступен.
Как автор Дэвиса, я немного предвзят, но я думаю, что API Дэвиса немного лучше и мощнее, чем магистральные. Я также думаю, что попытка изящной обработки возврата к маршрутизации на основе хеш-функции, когда pushState недоступен, не стоит усилий и сложности, которые она может создать.