Сохранение состояния при рендеринге страницы со стороны сервера

В настоящее время я создаю одностраничное приложение, используя backbone.js.

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

Проблема заключается в следующем: когда pushState недоступен, он инициирует маршрутизатор, используя текущий URL-адрес (например, если я получил доступ к URL-адресу с http://example.com/example маршрутизатор создаст хеш-фрагмент поверх этого URL-адреса)

So:

  1. Есть ли способ справиться с этим (помимо перенаправления использования)
  2. Если вы перенаправляете, как только JS (используя функцию обнаружения pushState), у вас все еще есть проблема с URL-адресами, не имеющими хэш-знаков.

Обычно спрашивают, есть ли лучший подход к разработке такого рода приложений?

Спасибо!


person Cu7l4ss    schedule 19.01.2013    source источник


Ответы (1)


Я думаю, что развивающийся консенсус — это pushstate или ничего (т. е. деградация web 1.0 и полный отказ от хэш-банг-маршрутизации), если для вас важен просмотр, оптимизированный для SEO.

Одна из причин, по которой я не использую Backbone.js, а просто использую PJAX, заключается в том, что время рендеринга pushstate и DOM настолько хорошее, что вы можете быть одной страницей с очень небольшим количеством JS, а хеш-банг-маршрутизация всегда был довольно хакерским.

Таким образом, вариант состоит в том, чтобы не использовать маршрутизатор Backbone все вместе, а просто позволить чему-то вроде PJAX (или DJAX или чему-то подобному) выполнять маршрутизацию, а Backbone просто выполнять внутренние события/отрисовку страницы (т.е. проверять формы, модальные окна и т. д.). .).

person Adam Gent    schedule 21.01.2013