2011-08-12 2 views

答えて

4

長所:

あなたの全体のフロントエンドがJavaScriptであるときは、柔軟性の多くを得ます。すべてが動的に生成され、オンデマンドでデータをロードする方が簡単です。また、要素をデータに簡単にバインドすることもできます。これにより、ユーザーがサーバーを変更したときに自動的に更新されます(ユーザーがブラウザーをリロードする必要はありません)。重いjavascriptアプリケーションを構築する興味深いアプローチについては、Backbone.jsまたはKnockout.jsをご覧ください。

このルートを使用すると、サーバーの軽量化を図ることもできます。通常、サーバーは単純なRESTful/JSONインターフェースを実装するだけです。実際には、フロントエンドは1つの静的ファイルであり、あなたのインターフェイスへの呼び出しを行います。ユーザーがサイトにいる間にこれらの呼び出しを非同期的に実行しているので、ネイティブアプリ(GMailなど)の方がはるかに速く、もっと感じることができます

もう1つの素晴らしい点は、あなたのサーバーの負荷。クライアントは余分な作業に気付かないでしょう。なぜなら、それは非常に速く起こるからです。しかし、あなたのサーバーは節約に感謝するかもしれません。また、サーバーコールについて賢明であれば、帯域幅を少なくすることもできます。

短所:

一部の人々は(実際には、ユーザーのパーセントの割合だが)javascriptを無効にしています。また、ブラウザの互換性は、いくつかのエッジケースではさらに難しくなります(しかし、jQueryはこれをより許容しやすくします)。クローラは一般的にjavascriptを実行しないため、多くのWebクローラはサイト上の何かをクロールしません。彼らはちょうどhtmlを解析する(Googleはここで例外かもしれない)?

ウェブアプリケーションを構築した経験では、パブリックに直面しているコンテンツ(つまりマーケティングマテリアル)は静的コンテンツでなければならず、ウェブクローラが見ることができます。ユーザーがアプリケーションにログインすると、サーバーへのRESTfulな呼び出しをすべて100%クライアント側にすることが好きです。

1
  • コン:非常に大規模なJavaScriptのファイル
  • コン:JavaScriptがオフになっている場合、あなたのサイトが
  • コンを動作しません。難しいスタイルに
  • コンを:大規模なJavaScriptのファイルには、潜在的により コードをクライアントに返します

あなたのインターフェースが大規模なリストを返した場合に何をデバッグする可能性の困難:

  • コンを必要とされるよりもそれを返す必要がありますし、それをJSでループし、コントロールを構築し、それらを追加する必要がありますか?

  • +1

    これは、ソースコードが公開されていることを示しています。 –

    +0

    はい、良い点 – griegs

    +0

    なぜdownvote ??? – griegs

    1

    「jquery + ajaxでjavascriptから生成された」と言うと、まったく明確ではありません。つまり、ブラウザのリフレッシュを要求するのではなく、フラットなHTMLページがロードされているだけです。動的HTMLと静的HTMLを構造化するための正しい方法と間違った方法はありません。すべてが文脈で取られなければならない。

    jquerymobileは、この技術を非常に広く使用しています。

    1

    サーバは、それが存在するため、大量に持ち上げる必要があります。クライアントの関与は私には最小限に抑える必要があります。クライアント側の開発は、UXの強化に焦点を当て、多くのブラウザでうまく動作するようにする必要があります。魅力的な理由がない限り、DOMを特定の方法で再構成する、データをソートしてフィルタリングするなどのタスクではありません。

    私の謙虚な意見では、プレゼンテーションロジックをあまりにもクライアントにオフロードすることはおそらく悪い考えです。

    1
    あなたはそれらの技術のいくつかの組み合わせを使用することができます

    Server produces data (usually JSON) -> Client-side Java Script creates HTML 
    Server produces data, server formats HTML -> Client renders HTML 
    

    アプリケーションを対比している

    は、前者はそれが簡単にリッチなユーザー経験を持つ動的に更新するページを提供することができます。 JavaScriptがダウンロードされてキャッシュされると、ネットワーク帯域幅が縮小されるため、前者もクライアントにもっと負荷をかけていることに気付くでしょう(私はJSONがHTMLよりも簡潔だと仮定しています)。

    JavaScriptを中心としたアプローチは、より複雑であり、一般的に、より多くの手間を必要とします。あなただけではJavaScriptですべてをやって起動する場合は、そのモデルを破るCSSマークアップ

  • スタイルに

    • 情報のJavascript

  • 行動を:

  • +0

    私が見た例はあなたが言いました元/上のアプローチのほぼ100%です。 –

    +0

    均一性には価値があります。あなたのすべてのデータがJSONサービスとして公開されていて、Javaフレームワークに精通していれば、JavaScriptですべてを行う余計なオーバーヘッドはそれほど高くなく、結果として得られるUIはとても良いかもしれません。 – djna

    2

    は、必ず別の懸念に目指します。そして、このモデルは、これまでのところWeb用にうまく機能しました。

    言われているように、doは、サイトの漸進的な強化のためにjavascriptを使用しています。例えば。ページのリロードの代わりにajaxを使用して何かを表示することができる場合は、先に進みますが、通常のページリクエストも引き続き動作するはずです。

    プログレッシブエンハンスメントの素晴らしい例は、githubのリポジトリブラウザをご覧ください。それをサポートするブラウザを使用している場合は、ajax経由でページが読み込まれ、のアドレスバーのURLが一致するように変更されます。それ以外の場合、それはいつも行われていることを行い、単に通常のリンクを持つページに移動します。だから、そこにjavascriptがあり、いくつかクールなトリックがありますが、すべてはそれなしで動作します。

    +0

    githubのリポジトリブラウザに言及するため+1。私はそれを例として使用しましたが、これはプログレッシブ・エンハンスメントの本当に良い例です。しかし、すべてのサービスがとても流動的であるかどうかは疑問です。 –

    関連する問題