1

重複をあまり発生させないために、自分の意見を適切に考慮に入れたいと思っています。私はPlayフレームワークを使用していますが、除外したい要素は、基本的な一般的な要素(ヘッダー、フッター、ナビゲーション要素)です。

このタイプのファクタリングの標準パターンは何ですか?ビューの継承機能について読んだとき、コンポーネントの再利用が許可されていないように聞こえます。

Playのバージョン2.0を使用しています。


たとえば、複数のページに共通のレイアウトがあり、交換可能なビット(たとえば、中央のコンテンツビットとフッター)を探しているとします。ここで、表示しているページが異なれば、フッターとコンテンツの組み合わせも異なります。 。

4

2 に答える 2

1

私が考えることができる2つのことがあります。1つ目は、ページのスケルトンがあり、各ビューにそのスケルトンの一部を塗りつぶしたい場合です。たとえば、これがスケルトンになります。

main.html:

<!DOCTYPE HTML>
<html>
    <head>
        <title>#{get 'title' /}</title>
    </head>
    <body>
        #{doLayout /}
    </body>
</html>

そして、これはそれを使用するページの1つになります。

ex1.html:

#{extends 'main.html' /}
#{set title:'Your title' /}

<div>
   Your content
</div>

そうすれば、すべての一般的な「ラッパー」コードについて心配する必要がなくなり、その例でタイトルを設定するのと同じ方法で、ヘッダーにスタイルシートまたはJavaScriptリンクを追加することもできます。

2番目の方法は、個別のテンプレートで実行するスニペットを含むページを作成して、それらを再利用できるようにすることです。

example2.html:

<div id="footer">
   #{include 'Application/footer.html' /}
</div>

footer.html:

<span>This will be rendered inside the "footer" div</span>

このような簡単な説明から、どちらをいつ使用するかが明確かどうかはわかりませんが、違いがわかり次第、私は常に両方を使用していると思います。

于 2012-12-18T00:18:28.473 に答える
1

ドキュメントで説明されているように、layoutsとの組み合わせを使用する必要があります。tags

Layout 現在のビューをラップheadするため、HTML構造の開始と終了、hTMLドキュメントのセクションへのスクリプトの追加、ロゴ付きの安定したヘッダー、著作権付きのフッターなどの一般的な要素の配置に最適な場所です。すべてのページで、レイアウトに配置することもできます。次に、レイアウトビューにパラメータを追加して、アクティブなアイテムのCSSクラスを簡単に変更できるようにすることができます。たとえば、メインナビゲーションの2つの異なるバージョン(たとえば、1つは一般ユーザー用、2つ目は管理者のみ)がある場合は、2つの異なるレイアウトを作成するか、1つのレイアウトを使用して、一部に応じて2つの異なるバージョンを表示できます。初期ビューから渡されたパラメータ。

Tags現在のビューにコードを挿入するために使用されます(したがって、レイアウトとは正反対の役割を果たします)。これらはレイアウトのない一般的なビューであり、パラメータもある関数です。これらは主に、すべてのページで変更されているものを配置したり、リクエストしたりするために使用されます。たとえば、通知ボックスの例(ドキュメントから:successerrorなど)です。また、サブナビゲーションにも役立ちます。特に、メインナビゲーションからすべての「ブランチ」で変更され、一部のページではまったく表示されない可能性がある場合に役立ちます。

tagsで使用することもできますlayouts(おそらくその逆も可能です)。ご覧のとおり、多くの可能性があります:)

注:palakoのサンプルはそれを非常によく示していますが、Play 1.xテンプレートエンジンでは一般的です。Play2.xでは、参照ドキュメントやPlayのソースとともに提供されるサンプルアプリケーションを確認してください。

于 2012-12-18T10:34:49.633 に答える