0

現在、Rails 3.2+ アプリを Backbone.js を使用してフロントエンドを管理するように移行しています。移行前のアプリには、application.html.erb 内にレンダリングされたいくつかのレイアウト パーシャルがあります。視覚化するには、グルーブシャークを考えてみてください。左の列とフッターがあり、すべてのナビゲーションが中央のコンテンツ領域で行われます。ポイントは、左右の列、フッター、およびヘッダーのコンテンツは静的ではありません。

これが、application.jst.eco がどのように見えるかを考えていたものです。コメント化された各行は、別のテンプレートをレンダリングできる場所です。

<!-- layouts/header -->

<div class="row-fluid">
  <div id="left-column" class="span3">
    <!-- layouts/left_column -->
  </div>

  <div class="span6">
    <section id="content">
      <header>
        <!-- notices -->
      </header>
      <!-- main content -->
    </section>
  </div>

  <div id="right-column"class="span3">
    <!-- layouts/right_column -->
  </div>
</div>

<!-- layouts/footer -->

application.html.erb 構造を複製するために Backbone でテンプレートを整理するにはどうすればよいですか? これで正しい方向に考えていますか?

さらに、バックボーン アプリケーションのエントリ ポイントについて混乱しています。引き続き<%= yield %>application.html.erb で呼び出しを行い、erb ビューを介してホームページ データをプリロードするので、より大きなレイアウトがバックボーン テンプレートで定義されている場合、これらすべてがどのようにまとめられるのでしょうか?

4

1 に答える 1

1

やり方はいろいろありますが、一例として私のやり方を紹介します。

まず、javascript が有効でないブラウザーのサポートが懸念されない限り、実際には Rails パーシャルをまったく使用する必要はありません。backbone.js アプリの一般的なフローは次のとおりです。

  1. <head>サーバーは、などを含む基本的なレイアウトをレンダリングします<body>が、実際のコンテンツのプレースホルダーを使用します。たとえば、私のアプリには、ナビゲーション バー用のプレースホルダーとメイン コンテンツ用のプレースホルダーがあります。
  2. バックボーン アプリケーションのメイン アプリ クラス (通常はApp) はルーターを作成し、ルーターのinitializeメソッドまたは現在のページのルート ハンドラーから、ビューを作成してページのプレースホルダーにレンダリングします。私の場合、ナビゲーション バーはスワップ アウトされないため、ルーターのinitializeメソッドでそれをレンダリングしてから、ルート ハンドラーで実際のページをレンダリングします。(実際にページにビューをレンダリングする方法に関するいくつかの重要なヒントについては、この記事をお読みください。)
  3. 複合ビュー (たとえば、各アイテムに独自のビューがあるアイテムのリスト) が必要な場合は、それらのビューを親でレンダリングし、それらを親の要素に (ドキュメントに直接ではなく)添付します。 . これにより、重要なページの要素が分離されます。
  4. バックボーンは ( 経由でBackbone.history.start) 開始され、そこからバックボーンが引き継ぎます。

あなたの場合、左/右の各列とメイン コンテンツとヘッダー (通知) のビューを作成することをお勧めします。後者の 2 つ (ヘッダーとメイン コンテンツ) の場合は、おそらく複合ビューとして作成します。

お役に立てば幸いです。詳細を提供してください。具体的な質問をしてください。ps複合ビューのレンダリングにバックボーン サポートを使用して、スワップ時に適切に削除され、DOM からバインド解除されていることを確認し、メモリ リークなどを回避します。

于 2012-08-26T10:20:30.297 に答える