1

私はタペストリー5のWebフレームワークを学んでいますが、それについての原則1を理解していません:「静的構造、動的動作」、それはどういう意味ですか?

コンポーネントをコンポーネントに追加しない場合、動的ページを作成するにはどうすればよいですか?

誰かが私を助けることができますか?前もって感謝します

4

3 に答える 3

1

これは、実行時にコンポーネントを効果的に選択または交換できないことを意味します。

たとえば、ユーザーが画面上にコンポーネントを好きなように配置できるポータルソリューションを構築したい場合、コンポーネントは静的な構造を持っているため、Tapestryはそれを行う効果的な方法を提供しません。つまり、何を入れるかを定義する必要があります。テンプレートファイルでコンパイル時にそれらを。

または、管理者専用のメニューがある場合は、Menuコンポーネントを派生コンポーネントに置き換えるだけでもかまいませんが、テンプレートでステートメントAdminMenuを使用ifするか、ブロックを使用してレイアウトにさまざまなメニューを挿入する必要があります。成分。

この制限に関連するアンチパターンがあります。神またはユーバーコンポーネントは、次のように、使用可能なすべてのコンポーネントを含む巨大なテンプレートファイルを効果的に作成することで、この問題を解決しようとします。

<t:if t:test="displayComponentA">
     <span t:type="ComponentA" ... />
</t:if>
<t:if t:test="displayComponentB">
     <span t:type="ComponentB" ... />
</t:if>
...

ただし、Tapestryは、表示されていないコンポーネントを含むコンポーネントツリー全体をアセンブルして、ページのレンダリングを行うため、これはひどく効果がありません。

于 2010-10-04T07:49:29.777 に答える
0

静的構造は、動的コンテンツを出力できないことや、コンポーネントをコンポーネントに追加できないことを意味するものではありません。実行時にコンポーネントを別のコンポーネントに追加することはできません。他のコンポーネントを使用してページまたはコンポーネント構造を定義できますが、これはすべてテンプレートで定義され、ページがレンダリングされる前に定義されます。ページがレンダリングされている間は定義されません。コンポーネントは、それ自体をレンダリングしないこと、テンプレートの一部をレンダリングすること(IfおよびUnlessコンポーネント)などを選択できます。

Tapestryの静的構造によって引き起こされるいくつかの実際的な状況の1つは、コンポーネントCがその内部の同じコンポーネントの別のインスタンスを使用できないことです。

于 2011-01-10T17:08:12.357 に答える
0

Tapestryは、テンプレートを使用して静的コンテンツを定義します。これらのテンプレートは通常、フレームワークによって動的にいくつかのコードに置き換えられるプレースホルダー変数を持つhtmlページです。テンプレートを使用すると、変更されていないものと変更されていないものを分離できます。通常、構造は動作よりも変化しにくいです。コンポーネントの一部の要素を動的に変更する場合でも、データで動的に入力されるテンプレートによってそれ自体が定義されるコンポーネントを使用します。この動的データは、他のコンポーネントなどを挿入する可能性があります。

于 2010-10-04T07:18:50.883 に答える