7

Dojo では、2 つの方法で任意のウィジェットを作成できることを知っています。

  1. プログラム的に
  2. 宣言的に

プログラムによってウィジェットを作成するには JavaScript を使用しますが、宣言によってウィジェットを作成するには、HTML タグで dojo 属性を使用します。

誰かが私にそれらの違いを説明できますか?

どちらが最も好まれますか、そしてその理由は何ですか?

4

1 に答える 1

7

違い

まあ、両方の方法には特定の違いがあります。宣言的な方法では、すべての構成は HTML 属性に基づいていますdojo-data-propsが、値、タイトルなどの他の属性にも基づいています。したがって、作成する DOM ノードは、実際にはある種のプレースホルダーとして機能します。

JavaScript コードを記述してウィジェットを作成する場合、それをアタッチする DOM ノードも提供する必要がありますが、最大の違いは、その DOM ノードから HTML 属性をコピーしないことです。ここでの DOM ノードは、プレースホルダーではなく、コンテナーとしてのみ機能します。


優先

ほとんどが推奨される解決策はありません。通常は、アプリケーションの要件と、最もクリーンな開発方法と考える方法によって異なります。

個人的には、最終的にはユーザー インターフェイスの一部になる宣言型マークアップが好きです。ただし、好きなだけ行くことができます。宣言的な方法でストアやウィジェットのイベント ハンドラーを作成する人も見てきましたが、個人的には、それらはユーザー インターフェイスの一部ではないため、JavaScript で記述することを好みます。

ウィジェットの作成方法を変更する理由は他にもあります。たとえば、宣言型マークアップの最大の欠点の 1 つは、(たとえば を使用してparseOnLoad) ページを解析する必要があることです。これは通常、ウィジェットをプログラムで作成するよりも遅くなります。特定の DOM ノードのみを解析することで改善できますが、追加のコードを記述する必要があります (それでも高速ではありません)。

ちょっとしたメモ; これは、宣言的な方法が遅いという意味ではありません。これは、実行する必要がある追加の操作にすぎないため、少し遅くなりますが、エンド ユーザーは違いに気付かない可能性があります。

ただし、宣言的な方法の利点は、ページをロードするときに、エンド ユーザーがプレースホルダーを表示できることです。適切なプレースホルダー (たとえば、<select>fordijit/form/FilteringSelectおよびdijit/form/ComboBox) を選択すると、エンド ユーザーには少なくとも何かが表示されます。すべてをプログラムで作成すると、JavaScript コードが実行されるまで、エンド ユーザーには空白のページが表示されます。

したがって、パフォーマンスが要件の 1 つであれば、プログラムで作成することを選択できます。プレゼンテーション レイヤーがビジネス ロジックから分離されているコードを分離したい場合は、宣言的な方法を使用することをお勧めします。

しかし、最終的には、どちらのソリューションも優れています。

于 2013-10-18T06:25:37.417 に答える