2012-10-25 4 views
9

Backbone.jsでは、モデルの読み込みと保存がajax呼び出しによって行われます。しかし、ページの読み込みに初期コレクションをロードするためのベストプラクティスは、これをajax経由でプルする必要はありませんか?私はできるだけ多くのサーバーサイドレンダリングを前面に行うようにしています。Backbone.jsに初期データを読み込むための最良の方法は何ですか?

以前は、初期データ状態のjson文字列を含むjavascript変数をhtmlに設定していましたので、サーバーサイドでレンダリングすることができますが、これが良いかどうかはわかりません。

答えて

0

あなたが選択するアプローチは、読み込む予定のデータ量とそのデータがページ内でどのように使用されるかによって決まるでしょう。

最終的に必要なデータのほとんどがページに表示されない場合、javascript変数に初期状態をブートストラップすることは悪いルートではない可能性があります。

データがページの表示に直接関係する場合は、事前レンダリングされたDOMを解析して、バックボーンアプリケーションの初期状態にすることをお勧めします。この種の解析は、特に大きなデータセットの場合には、いくぶん遅くなることに注意してください。

プレレンダリングされたコンテンツを解析することになった場合は、small jQuery DOM parserをまとめて返します。提示されたコンテンツをバックボーン対応のフォームにマッピングすると便利な場合があります。

5

それが必ずしもベストプラクティスだ場合は知っているが、JSON オブジェクトでHTMLを播種するこの方法はいけない(あなたが正しい、それを説明するようではないJSON 文字列は?)確かにやっての私の好ましい方法であります初期装填。最初のAJAX呼び出しが返るのを待つのが遅くなるだけでなく、オープンな接続が少ないためにブラウザが何か別のもの(img srcなど)を読み込んで解放するため、少し早くdocument.onLoadする。

このメソッドを使用する場合は、ページ上の静的なhtml要素にチャンスを与えるために、この変数を本文の下にあるスクリプトタグ(つまりheadセクション内)に配置することをお勧めします最初に読み込んでレンダリングします。 jsonデータは、document.onLoadが起動すると準備ができます。

+0

このアプローチの唯一の欠点は、我々はJavaScriptを生成するバックエンドの言語の重複が整理を持っており、アプリのあなたの全体の「初期化」相は、いくつかの.erbテンプレート(またはJSP/PHP /など)であり、むしろその後、javascriptの土地で。スパゲッティのような匂いがすることもあります。 –

1

Backbone docsから、スクリプトタグのモデルを初期化することは悪いことではありません。私の現在のプロジェクトでは、外部のjavascriptでBackboneモデルを初期化できるように、window.projectDataの中の普通のオブジェクトだけを設定することに決めました。

<script> 
    ;(window.projectData || (window.projectData = {})).modelName = {/* value */}; 
</script> 
関連する問題