フランシスコが言ったように、コードを簡単に分離できます。つまり、JavaScript コードですべてのウィジェットをインスタンス化すると、JavaScript はかなり大きくなり、HTML は通常小さくなります (ウィジェットを配置するために使用する「コンテナー」ノードのみが含まれます)。
パフォーマンスの向上: ページ全体を解析する必要があるため、実際にパフォーマンスが低下することに同意する必要がありますが、無効parseOnLoad
にして実際に必要な DOM ノードのみを解析することで最適化できます。私が働いている会社では、すべての Dojo ウィジェット マークアップを<div>
特定のクラス名を持つ 内に配置することで、これを実現しました。次に、JavaScript コードで次のようにします。
query(".containsDojo").forEach(node) {
parser.parse(node);
});
HTML と JS の間の切り替えなし: HTML と JS の間の切り替えにより、コードを理解しやすくなり、コンテキストを把握しやすくなります。たとえば、C.html というページに配置されたウィジェット B によってウィジェット A を変更する必要があるとします。次に、ウィジェット A がどのページにあり、どこにあるか (上、下、...) がわかっているので、ウィジェット A を探すのは簡単です。すべてを JavaScript ファイルに入れると、ウィジェットがどのコンテキストで初期化されるかがわからないため、コードの管理が難しくなります。ウィジェットはコード内の任意の場所で初期化できるため、JavaScript コード全体に目を通す必要があります。
コンテンツを動的に変更するのが簡単: 動的なコンテンツが必要な場合は、通常、何らかのウィジェットを自分で作成し、そこに JavaScript ロジックを配置して、「メイン」の JavaScript と HTML コードがきれいに見えるようにします。dijit/registry
モジュールを使用して、コンテンツ内の特定のものをいつでも変更できます。
読みやすく、維持しやすい: HTML と JavaScript の切り替えについて前の段落で述べたことと同様に、私はそれにはまったく同意しません。dijit/form/TextBox
つまり、通常の HTML 入力フィールドとの違いは何ですか? どちらもUIアイテムです。それでも、あなたの考えに従うなら、TextBox を JavaScript コードのどこかに置き、通常の HTML 入力フィールドを HTML 内に置きます。HTML はコンテキストを提供するだけでなく、すべての UI 要素を一元化します。