これはかなり遠い質問ですが、私はそれを試してみましょう。ここで重要なことは、これらの呼び出しに対して「正しい使用法」などはないということです。バックボーンは、目的に応じて柔軟に対応できるため、お客様のニーズに適応することができます。だからこそ、それはまだ洗練されているが、「懐疑的な」フレームワーク(それは「私の道かハイウェイ」なのかを伝える)の世界の中にある。
バックボーンはレンダリングに関して魔法を使用しません。 render()
メソッドはノーオペレーションであり、自動的に呼び出されることはありません。その存在は、物事が通常どのように行われるかのヒント以上のものではありません。
ただし、initialize()
メソッドは、ビューのインスタンス化時に自動的に呼び出されます。バックボーンは、その時点で、ビューの最上位のDOM要素(el
)が既に作成されていて、それに添付される準備ができていることを保証します。
しかし、これも非常に小さいです。トップレベルの要素はありますが、コンストラクタにoptions.el
を渡して、el
を既存の要素に設定していない限り、DOMにまだ添付されていません。 el
をDOMに挿入することもあなたの仕事です。
あなたは物事を結ぶ方法を自由に決めることができます。私は一般的にやっていることはこれです:
私の意見のほとんどは、一般的にビューのtemplate
プロパティに割り当てられたテンプレートを、持っています。 (もう一度、大会には、魔法は含まれていません。foo
と名付けることができます)。そのテンプレートはinitialize()
でコンパイルされています。
initialize()
では、ビューが表すはずのモデルまたはコレクションとの関係を設定します。つまり、モデル/収集イベントを観察し、データが変更されたときにrender
に電話をかけます。 (データソースとしてBackboneエンティティを使用する必要はありません。もちろん、何でも構いません)。
render()
では、データがテンプレートに入力され、結果はel
のinnerHTMLになります。その後、DOMにまだel
が挿入されていない場合は、挿入します。
render()
への最初の呼び出しは、データの準備が整うと実行されます。適切なタイミングはアプリに依存します。おそらくrender()
がinitialize()
の最後の呼び出しであるか、または後で何らかのイベントが実行されます。
繰り返しの定型文のように聞こえる音がたくさんある場合は、それはまさにそれです。 Marionetteのようなフレームワークは、それを世話するためにバックボーンの上に存在します。
しかし、そのフレームワークの魔法には大きなパフォーマンス上のペナルティがあります。だから私はたくさんのビューを生成しなければならないとき、私はジェネリックバックボーンのものに固執します(テンプレートハンドリングを高速化するために私のowncomponentsの1つを使用します)。
あなたは既にこのリンクに出会ったいずれにせよ、私は同じ問題を抱えていて、ここでそれらの大部分を解決しました。あなたが参照しているのと同じトピックがサブビューを引き起こしますが、すべてがどのように機能するかについては良い考えが得られます。 http://stackoverflow.com/質問/ 9337927/how-to-handle-initializing-and-rendering-backbone-jsのサブビュー – rule
あなたは_correct usage_に触れていません。記述されていないので、誰かがあなたに与えることができるでしょう彼らの意見ですが、それはSOのことではありません。公式ドキュメントからリンクされている[Backbone primer](https://github.com/jashkenas/backbone/wiki/Backbone%2C-The-Primer)があり、_initialize_ calling_render_の例を示しています。これは個人的には好きではない。 – mikeapr4