23

誰かがこの問題の解決策を見つけたかどうか疑問に思っています。両方の長所を活かす方法はありますか?

  • パーマネント リンク、アクセシビリティ、SEO、適切なフォールバック / プログレッシブ エンハンスメント (基本的に Web 開発のすべてのベスト プラクティス)を備えたページベースのサイトを構築する
  • また、javascript を使用している場合は、コンテンツの ajax 読み込みによるレスポンシブなフロントエンド エクスペリエンス、基盤となるサイト ページをナビゲートする際のページの更新なし、scripts/content/css/etc の最小限の冗長ダウンロード。(AngularJs や Ember.js などのクライアント側フレームワークのすべての利点)

私はいくつかの主要なサイト (gmail、stackoverflow) がこれを管理できることを知り、Jeff の新しいサイトは noscript タグでサイトの最低限のバージョンを構築していることがわかります。

  1. 2 つのバージョンのサイトを構築し、両方を送信し、どちらを表示できるかをクライアントに決定させるハイブリッド ページベース/シングルページ アプリの解決策はありますか? (これはgmailの機能ですか?)
  2. それともAngularJSらの問題です。優雅な劣化を可能にするように設計されていないだけですか?

#1が答えだと考えるのは私のDRY脳を傷つけます.

(私が AngularJs に注目している理由は、HTML テンプレートのサポート、宣言型スタイル、および js スコープを修正する試みが気に入っているからです。Ember やその他のフレームワークも優れています。おそらく、そのうちの 1 つがハイブリッド サイトにより適しているでしょう。 ?)

4

2 に答える 2

14

答えは「場合による」であるため、この質問は少し微妙な質問です。たとえば、Gmail について言及しましたが、SEO のために Gmail のようなアプリケーションをインデックス化する必要がある理由はまったくありませんが、必要なものやサポートする必要があるものによっては、Javascript を使用しないことをサポートできるようにしたい場合があります。

しかし、少なくとも「Web アプリケーション」のクラスについては、「JavaScript を使用しない」という議論でさえ、最近では疲れ果てて弱くなっています。Windows アプリケーションを使用したい場合は Windows が必要です。JavaScript を利用した Web アプリケーションを使用したい場合は、それを使用するのに障害のないブラウザーが必要になると想定するのは不合理ではありません。

ただし、あなたの質問に戻ると、私は AngularJS に最も精通しているため、AngularJS としか話せません。ほとんどの場合、プログレッシブ エンハンスメント アプローチをサポートできますが、これをサポートしたい場合は、URL ルーティングなどを使用することを期待しないでください。できることは、ページの相互作用と動作を強化する方法として jQuery を使用する場合と同様に、AngularJS コントローラー、バインディング、およびディレクティブを使用することです。

このアプローチは、Angular (または Ember) でできることを深刻に制限することを覚えておいてください。また、jQuery だけでは簡単にできなかったこのアプローチから得られるものについては、議論の余地があるかもしれません。

最近の代替手段は、Twitter のようなサイトが行っていることを行うことです。これは基本的に、初期ロード時にサーバーから完全にレンダリングされた HTML を提供し、その後のロードと強化された UI 動作に Javascript を使用することです。これは、Javascript を使用する場合と使用しない場合のブラウジングを本当にサポートする必要がある場合に非常に効果的です (実装するのはおそらく非常に困難ですが)。また、最初の要求のレンダリング/読み込み時間を改善するという追加の利点もあります。繰り返しになりますが、これを使用できるかどうかは、サイトが実際にどのように機能するかによって大きく異なるためです。そのために設計する必要がありますが、それは些細なことでも簡単なことでもありません。

アップデート:

価値があるのは、Year of Mooアプローチを採用し、PhantomJS を使用して SEO が必要なページをレンダリングし、それらのキャッシュされた初期状態をどこかに貼り付けて提供することです。これを更新するために、デプロイメントで実行する rake タスクがあります。繰り返しますが、これは単なる初期状態ですが、今のところ問題を回避するのに役立ちます.

物事は常に変化していますが、1年ほどでこのアプローチに対する考えが変わると確信しています。

于 2013-10-14T17:50:48.560 に答える
2

Google のMaking AJAX Applications Crawlableを読みましたか。JavaScript シングル ページ アプリとクロール可能なコンテンツを使用できます。

angular に固執する場合は、興味深い記事があります: Turns out it is possible to have your AngularJS application indexed

于 2013-05-02T23:38:34.120 に答える