Подтвердить что ты не робот

Предпочтительное решение для маршрутизации на стороне клиента?

Я разрабатываю одностраничное веб-приложение на основе браузера.

JQuery уже используется в моем приложении. В настоящее время я планирую использовать KnockoutJS для привязки данных и управления пользовательским интерфейсом. Однако я использовал Backbone.js в прошлом, и я был очень впечатлен средствами маршрутизации, предоставляемыми уровнем контроллера.

Я также рассмотрел некоторое решение на основе JQuery, например pathjs для маршрутизации на стороне клиента.

Было бы здорово, если бы кто-то мог предложить предложения и рекомендации по выбору правильной системы маршрутизации.

Я не хочу использовать Backbone.js вместо KnockoutJS из-за отличных возможностей привязки данных KnockoutJS.

4b9b3361

Ответ 1

Пройдя немного исследований, я нашел решение. @Eisenhauer Backbone маршрутизации объектов являются удивительными, но что делать, если я не использую Backbone. Как я изложил в своем вопросе, я уже использую KnockoutJS, который предоставляет мне модель MVVM на стороне клиента, и поэтому не очень хорошая идея добавить дополнительную реализацию MVC на ту же страницу.

Для людей, которые ищут автономное решение маршрутизации, pathjs - это простое и элегантное решение.

Более гибкое, мощное и автономное решение маршрутизации - Crossroads.js, доступное по адресу http://millermedeiros.github.com/crossroads.js/. Он очень хорошо документирован и действительно мощный, поэтому его можно адаптировать к любым требованиям.

Ответ 2

Вы можете использовать API истории, а не подход hashbang?

  • Он позволяет вам манипулировать URL-адресом, отображаемым пользователю.
  • Это означает, что назад/вперед работают разумно.
  • Закладка страницы работает разумно.
  • Это лучше с точки зрения производительности, потому что, если пользователь обновляет страницу (или попадает ссылку на страницу из внешнего источника), правильный контент загружается в первый раз, вместо того, чтобы загружать пустую страницу, а затем захватывать правильную контента через AJAX.

Недостатком является то, что старые браузеры не поддерживают его. Вы можете отказаться от подхода hashbang (если вам действительно нужно). Я не знаю никаких существующих структур, которые это делают. Я предпочел бы отказаться от динамически загружаемого контента (т.е. Перезагрузки полной страницы, когда пользователь нажимает ссылку). API истории будет все более широко поддерживаться, поэтому эта "проблема" со временем сократится.

Здесь рабочий пример с некоторой документацией. Из адресной строки видно, что страницы загружают "старую школу" (полное обновление страницы), но если вы посмотрите на консоль (Firebug, инструменты Chrome dev), вы увидите, что контент захватывается через запрос AJAX.

Mozilla имеет несколько docs об этом.

Ответ 3

Также есть отличный Director

Ответ 4

Crossroads.js кажется одним из лучших. Одним из основных преимуществ этого является то, что он не полагается на window.location для маршрутизации. Он легкий, поскольку он придерживается только маршрутизации и маршрутизации в одиночку.

Другие, которые вы можете попробовать: finch.js, davisjs (на основе pushState, чтобы вы могли использовать существующие ссылки в качестве резервного, если JS не работает)

Добавление обновления: 30 марта 2015 г. - В конце прошлого года я переехал в AngularJS. Hands-down лучшая форма переключения JQ, имеет множество модулей, таких как маршрутизация встроенных.