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

Гибридное веб-приложение на основе страниц/одностраничных страниц (Angularjs, Ember.js) с прогрессивным улучшением?

Мне интересно, нашел ли кто-нибудь решение этой проблемы. Есть ли способ получить лучшее из обоих миров:

  • создать сайт на основе страницы с постоянными ссылками, доступностью, SEO и грациозным резервным/прогрессивным улучшением (в основном, всеми передовыми методами веб-разработки)
  • а для тех, у кого есть javascript, отзывчивый внешний интерфейс с загрузкой содержимого ajax, ни одна страница не обновляется при навигации по страницам сайта, минимальная избыточная загрузка скриптов/содержимого/css/etc. (все преимущества клиентской платформы, такие как AngularJs или Ember.js).

Я вижу, что несколько основных сайтов могут управлять этим (gmail, stackoverflow), и я вижу, что новый сайт Джефф создает голый -bones версии сайта в теге noscript.

  • Является ли решение для гибридного приложения на основе страницы/одной страницы создавать две версии сайта, отправлять оба, и позволить клиенту решить, что он может показать? (это то, что делает gmail?)
  • Или проблема в том, что AngularJS et al. просто не предназначены для грациозной деградации?

Мне больно DRY думать, что # 1 - это ответ.

(Причина, по которой я сосредотачиваюсь на AngularJs, заключается в том, что мне нравится поддержка html-шаблонов, декларативный стиль и его попытки исправить js-область. Ember и другие фреймворки тоже превосходны, возможно, один из них лучше подходит для гибридный сайт?)

4b9b3361

Ответ 1

Этот вопрос немного нюансирован, потому что ответ "это зависит". Например, вы упомянули Gmail, нет никаких причин, чтобы приложение, такое как Gmail, нужно было индексировать для SEO, хотя в зависимости от того, что вы хотите или вам нужно поддерживать, вы можете захотеть, чтобы вы поддерживали отсутствие Javascript.

Однако даже аргумент "no-javascript" устает и слаб в эти дни, по крайней мере, для класса "веб-приложений". Если я хочу использовать приложение Windows, мне нужна Windows, если я хочу использовать веб-приложение с поддержкой javascript, неразумно предположить, что мне понадобится браузер, который не искалечен, чтобы использовать его.

Однако вернемся к вашему вопросу, я могу говорить только с AngularJS, потому что я наиболее знаком с ним. По большей части это позволяет вам поддерживать прогрессивный подход к повышению, хотя не ожидайте использовать такие функции, как маршрутизация URL-адресов, если это то, что вы хотите поддержать. Что вы можете сделать, это использовать контроллеры, привязки и директивы AngularJS, аналогичные тому, как вы можете использовать jQuery в качестве способа улучшения взаимодействия и поведения страницы.

Просто имейте в виду, что этот подход серьезно ограничит то, что вы можете сделать с помощью Angular (или Ember, если на то пошло), и может начаться дискуссионное то, что вы получаете от этого подхода, который вы не могли бы легко сделать с помощью jQuery в одиночку.

Альтернативой в наши дни является то, что делают такие сайты, как Twitter. Это в основном служит для полного отображения HTML-кода с сервера для любого представления начальной загрузки, а затем использования Javascript для последующей загрузки и улучшения поведения пользовательского интерфейса. Это очень эффективно (хотя, возможно, довольно сложно реализовать), если вам действительно нужно поддерживать просмотр с Javascript и без него, и имеет дополнительное преимущество для улучшения времени рендеринга/загрузки для первого запроса. Опять же "это зависит", потому что во многом зависит от того, как работает ваш сайт, если это возможно. Вы должны проектировать для него, и это не будет тривиальным или легким.

Update:

Для чего мы стоим, мы принимаем год Moo подход и рендеринг страниц, которые нуждаются в SEO, используя PhantomJS и прикрепляя кэш-память их где-нибудь, чтобы обслуживать их вверх. У нас есть задача rake, которую мы запускаем для развертывания, чтобы обновить это. Опять же, это только начальное состояние, но сейчас это помогает обойти проблему.

Вещи всегда меняются, и я уверен, что через год я изменил свое мнение об этом подходе.