Blogs:
Zur Bestellung selbst:
Ein zäher vierter Teil im Dojo Workshop. Ziel war es ein eigenes Widget mit Template zu erstellen. Idealerweise eine Liste, da dies unter anderem auch eine Schleife im Markup des Templates bedeutet hätte. Anschließend sollte das Template anhand eines Businessobjekt gerendert werden. Das Objekt sollte aus einem Object Store anhand eines Controllers bezogen werden.
Dojo erlaubt das Erstellen von Widgets mit Hilfe von Templates. Ob es sich dabei zwingend um ein einzelnes Steuerelement oder gar um ganze Seitenabschnitte halten muss, sei dahin gestellt. Mit define und dem _TemplatedMixin lassen sich eigene template-basierte Widgets definieren. Das Template ist entweder ein JavaScript String oder wurde zuvor mit require!text aus einer separaten Datei geladen.
Da mit define ein Name für den Prototype vergeben wurde, kann im eigentlichen Markup in Verbindung des
Der folgende Schnipsel zeigt eine Deklaration eine template-basierten Widgets in JS. Das Widget bezieht das Template aus einer externen Datei mit Hilfe der require Methode des Dojo Frameworks. Das Widget kann anschließend auf der Seite mit dem Markup
require(["dojo/_base/declare", "dijit/_WidgetBase", "dijit/_TemplatedMixin", "dojo/text!./templates/TemplatedWidgetThing.html"], function(declare, _WidgetBase, _TemplatedMixin, template) { declare('templatedWidgetThing', [_WidgetBase, _TemplatedMixin], { templateString: template }); });
Die Suche nach der Möglichkeit andere Token als ${name} zu verwenden (z. B. Conditional- oder For-Statements) führte leider zu keinem positiven Ergebnis. Zwar sah Dojo.Dtl sehr viel versprechend aus, weigerte sich jedoch erfolgreich irgendetwas nützliches zu tun.
Der letzte Stop war ein kurzer Blick auf den Object Store. Der Store bietet eine einheitliche API zur Abfrage und Manipulation von Objekten an. Im ersten Schritt haben wir einen Memory Store verwendet. Der Store hält alle seine Objekte im Speicher. Eine Manipulation des Speichers kann somit nicht ausgeschlossen werden.
Der letzte Teil, das Beziehen von Objekten aus einem Store mit Hilfe eines Controllers war zeitlich leider nicht möglich.
Um wieder etwas aufzuholen, wird bis zum nächsten Workshop. Der Server um eine REST API zur Objektabfrage und Manipulation unter Berücksichtigung der JSON/Rest Store Möglichkeiten erstellt. Zusätzlich wird eine Templating-Engine angebunden um weitaus anspruchsvollere Templates darstellen zu können.
Folgende Teilnehmer waren anwesend: Marco Jacob, Heiko Dehmel und Christian Haarmann.
Steuerelemente werden durch Dijit um zahlreiche Funktionalitäten erweitert. Widgets können über eine einheitliche API in JavaScript angesprochen und erstellt werden. Dijit bietet auch die Möglichkeit eigene Themes zu verwenden.
Widgets können entweder deklarativ direkt im Markup definiert werden oder aber mit Hilfe von JavaScript erstellt werden. Wenn Widgets im Markup deklariert werden, darf ein Aufruf an den Parser nicht fehlen. Dieser sucht nach Elementen mit bekannten Dojo-Tags, z. B.
Zum Einstieg wurde eine Login-Seite, bestehend aus den Eingaben Anmeldename (TextBox), Passwort (TextBox) und Land (Select), erstellt. Das Land ist mehr Just For Fun auf der Seite da es im Gegensatz zum Anmeldename und Passwort keine Texteingabe, sondern eine Auswahl erfordert. Listen, bzw. Select-Widgets, können so zum Beispiel keine
Die Eingabefelder für Anmeldename und Passwort waren weniger kritisch. Damit die Eingabefelder jedoch mit den Möglichkeiten von Dojox validiert werden können, bedarf es keiner normalen dijit/form/TextBox, sondern einer dijit/form/ValidationTextBox. Darüber hinaus sind die Dojox Validierungen ebenfalls modularisiert. Eine E-Mail Validierung wird erst möglich nachdem neben dem
Das Konfigurieren der Validierung gestaltet sich an dieser Stelle aufgrund der fehlenden Dokumentation etwas umständlich. Entweder ist Reverse Engineering aus den Dojox-Sourcen erforderlich, oder aber Beispiele verraten einen bereits die notwendigen Details zur Steuerung der Schnittstelle. Die Konfiguration geschieht entweder deklarativ oder per Skript. Bei der deklarativen Schreibweise wird die Konfiguration direkt im
Das
Für diese Seite werden beim Laden bereits 87 Requests an den Webserver abgesetzt. Der Grund für die hohe Anzahl der Requests ist das Nachladen der benötigten Abhängigkeiten. Da diese hohe Anzahl der Requests in Produktivumgebungen, insbesondere bei hoher Latenz, zu einer hohen Ladezeit führt, sollten mit Dojo erstellte Projekte unbedingt das Packaging bzw. Building berücksichtigen. Dies werden wir in einem späteren Workshop ausprobieren und die Anwendung noch einmal auf ihre Geschwindigkeit untersuchen.
Folgende Teilnehmer waren anwesend: Marco Jacob, Heiko Dehmel und Thorsten Kutz.