Ответ 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, которую мы запускаем для развертывания, чтобы обновить это. Опять же, это только начальное состояние, но сейчас это помогает обойти проблему.
Вещи всегда меняются, и я уверен, что через год я изменил свое мнение об этом подходе.