2013-10-18 10 views

Antwort

6

Unterschied

Nun, es gibt gewisse Unterschiede zwischen beiden Möglichkeiten. In der deklarativen Art basiert die gesamte Konfiguration auf HTML-Attributen wie dojo-data-props, aber auch auf einigen anderen Attributen wie dem Wert, Titel, .... Der von Ihnen erstellte DOM-Knoten dient also als eine Art Platzhalter.

Wenn Sie Widgets erstellen, indem Sie JavaScript-Code schreiben, müssen Sie den DOM-Knoten angeben, den Sie ebenfalls anhängen. Der größte Unterschied besteht jedoch darin, dass die HTML-Attribute nicht von diesem DOM-Knoten kopiert werden. Der DOM-Knoten dient hier nur als Container, nicht als Platzhalter.


Bevorzugte

Es gibt keine Lösung, die meist bevorzugt, und es hängt in der Regel von den Anforderungen Ihrer Anwendung und was denken Sie, ist der sauberste Weg zu entwickeln.

Persönlich mag ich das deklarative Markup, weil es am Ende ein Teil der Benutzeroberfläche ist. Sie können jedoch so weit gehen, wie Sie möchten. Ich habe Leute gesehen, die Stores und Widget-Event-Handler deklarativ erstellen, aber ich bevorzuge es, sie in JavaScript zu schreiben, da sie nicht Teil der Benutzeroberfläche sind.

Es gibt auch andere Gründe, die die Art ändern könnten, wie Sie Widgets erstellen würden. Einer der größten Nachteile von deklarativem Markup ist beispielsweise, dass Sie die Seite analysieren müssen (zum Beispiel mit). Dies ist normalerweise langsamer als das programmatische Erstellen der Widgets. Sie können es verbessern, indem Sie nur bestimmte DOM-Knoten analysieren, aber dann müssen Sie zusätzlichen Code schreiben (und es ist immer noch nicht schneller).

Nur eine kleine Notiz; Das bedeutet nicht, dass der deklarative Weg langsam ist. Es ist nur eine zusätzliche Operation, die ausgeführt werden sollte, und daher ist es etwas langsamer, aber die Wahrscheinlichkeit ist groß, dass der Endbenutzer den Unterschied nicht sehen wird.

Ein Vorteil der deklarativen Art ist jedoch, dass der Endbenutzer beim Laden der Seite den Platzhalter sehen kann. Wenn Sie den richtigen Platzhalter auswählen (z. B. <select> für dijit/form/FilteringSelect und dijit/form/ComboBox), wird der Endbenutzer zumindest etwas sehen. Wenn Sie alles programmgesteuert erstellen, wird dem Endbenutzer eine leere Seite angezeigt, bis der JavaScript-Code ausgeführt wird.

Wenn Leistung also eine der Anforderungen ist, dann könnten Sie sie programmatisch erstellen. Wenn Sie möchten, dass Code getrennt wird, bei dem die Präsentationsschicht von der Geschäftslogik getrennt ist, würde ich den deklarativen Weg empfehlen.

Aber am Ende sind beide Lösungen gut.

Verwandte Themen