Разница в реализации истории с помощью backbone.js, davis.js и history.js - PullRequest
14 голосов
/ 02 декабря 2011

Все эти 3 библиотеки позволяют манипулировать объектом истории. Хорошо, магистраль делает гораздо больше, но давайте рассмотрим только часть истории.

В чем разница между этими 3 реализациями?

Ответы [ 2 ]

15 голосов
/ 11 февраля 2012

History.js - это скорее полифиль для браузеров, которые изначально не поддерживают pushState в HTML5, и для устранения различий между различными реализациями pushState в браузерах.

Davis.js - это слой маршрутизации, в основном поверх pushState (хотя это можно легко переключить на хеш-маршрутизацию). Он дает вам простой API для определения и реагирования на маршруты в вашем приложении.

Маршрутизатор Backbone аналогичен Davis, однако он пытается автоматически переключиться на маршрутизацию на основе хэша, когда pushState недоступен.

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

0 голосов
/ 08 февраля 2012

Вот, пожалуйста:

  • davis.js поддерживает только HTML5 history.pushState. Браузеры, которые не работают с ним, не поддерживаются, поэтому, вероятно, не вариант.
  • И backbone, и history.js имеют запасные варианты для onhashchange.
  • Как вы уже знаете, магистраль также выполняет MVC и через подчеркивание, от которого она зависит, дает вам дополнительные помощники для функциональных вещей.

Это действительно зависит от того, нужны ли вам дополнительные функциональные возможности Backbone, и в этом случае это очевидный выбор.

...