Dojo では、2 つの方法で任意のウィジェットを作成できることを知っています。
- プログラム的に
- 宣言的に
プログラムによってウィジェットを作成するには JavaScript を使用しますが、宣言によってウィジェットを作成するには、HTML タグで dojo 属性を使用します。
誰かが私にそれらの違いを説明できますか?
どちらが最も好まれますか、そしてその理由は何ですか?
Dojo では、2 つの方法で任意のウィジェットを作成できることを知っています。
プログラムによってウィジェットを作成するには JavaScript を使用しますが、宣言によってウィジェットを作成するには、HTML タグで dojo 属性を使用します。
誰かが私にそれらの違いを説明できますか?
どちらが最も好まれますか、そしてその理由は何ですか?
まあ、両方の方法には特定の違いがあります。宣言的な方法では、すべての構成は HTML 属性に基づいていますdojo-data-props
が、値、タイトルなどの他の属性にも基づいています。したがって、作成する DOM ノードは、実際にはある種のプレースホルダーとして機能します。
JavaScript コードを記述してウィジェットを作成する場合、それをアタッチする DOM ノードも提供する必要がありますが、最大の違いは、その DOM ノードから HTML 属性をコピーしないことです。ここでの DOM ノードは、プレースホルダーではなく、コンテナーとしてのみ機能します。
ほとんどが推奨される解決策はありません。通常は、アプリケーションの要件と、最もクリーンな開発方法と考える方法によって異なります。
個人的には、最終的にはユーザー インターフェイスの一部になる宣言型マークアップが好きです。ただし、好きなだけ行くことができます。宣言的な方法でストアやウィジェットのイベント ハンドラーを作成する人も見てきましたが、個人的には、それらはユーザー インターフェイスの一部ではないため、JavaScript で記述することを好みます。
ウィジェットの作成方法を変更する理由は他にもあります。たとえば、宣言型マークアップの最大の欠点の 1 つは、(たとえば を使用してparseOnLoad
) ページを解析する必要があることです。これは通常、ウィジェットをプログラムで作成するよりも遅くなります。特定の DOM ノードのみを解析することで改善できますが、追加のコードを記述する必要があります (それでも高速ではありません)。
ちょっとしたメモ; これは、宣言的な方法が遅いという意味ではありません。これは、実行する必要がある追加の操作にすぎないため、少し遅くなりますが、エンド ユーザーは違いに気付かない可能性があります。
ただし、宣言的な方法の利点は、ページをロードするときに、エンド ユーザーがプレースホルダーを表示できることです。適切なプレースホルダー (たとえば、<select>
fordijit/form/FilteringSelect
およびdijit/form/ComboBox
) を選択すると、エンド ユーザーには少なくとも何かが表示されます。すべてをプログラムで作成すると、JavaScript コードが実行されるまで、エンド ユーザーには空白のページが表示されます。
したがって、パフォーマンスが要件の 1 つであれば、プログラムで作成することを選択できます。プレゼンテーション レイヤーがビジネス ロジックから分離されているコードを分離したい場合は、宣言的な方法を使用することをお勧めします。
しかし、最終的には、どちらのソリューションも優れています。