Ob Sie nun dem Trend der Single-Page-Anwendung folgen oder einfach eine AJAX-basierte Seite arrangieren, die eine Auflistung von Datensätzen herunterlädt und anzeigt – die Knockout-Bibliothek ist eine hervorragende Ressource. Konzeptionell an das MVVM-Modell angelehnt, bindet die Bibliothek ein Datenobjekt an eine HTML-Seite und überlässt es Ihnen, die Details der Elementdatenbindung zu definieren. Knockout umfasst eine lange Liste von Fähigkeiten und speziellen Features, wie zum Beispiel Text- und HTML-Bindung, berechnete Ausdrücke und beobachtbare Daten (Observables). Neben einem raffinierten und eleganten Design ist Knockout benutzerfreundlich, weil es immer genau das Feature bereithält, nach dem Sie gesucht haben. Es wurde von Entwicklern für Entwickler konzipiert – und das merkt man auch.
Die Renaissance von AJAX hat vor einigen Jahren verändert, wie Entwickler Websites planen und umsetzen. Es ist noch nicht einmal zehn Jahre her, als die Vorstellung von reinen clientseitigen, JavaScript-basierten Anwendungen von jedem Entwickler und Designer mit einem müden Lächeln abgetan worden wäre. Heute ist es die Idee einer JavaScript-losen Anwendung, die ironisches Schmunzeln hervorruft. Im Wesentlichen ist AJAX die Fähigkeit der Anwendung, einen Remote-Server aus dem Browser heraus aufzurufen. Auf diese Weise erhält der Clientcode neue Daten und steht vor dem Problem, sie in das existierende Dokumentobjektmodell zu integrieren. Ist das wirklich ein Problem? – Das hängt von den Daten ab. Die Integration von wenigen Daten in das Dokumentobjektmodell ist keine große Geschichte, solange die Daten an konkrete und feste Orte gehen. Doch wie sieht es aus, wenn Sie eine Auflistung von Datensätzen anzuzeigen haben? In diesem Fall ist die Anzahl der Datensätze variabel und es gibt keine festen Elemente, an die sich die Daten binden ließen.
Letzten Endes ist die Lösung recht einfach: Ein neues HTML muss dynamisch generiert und mit dem vorhandenen Dokumentobjektmodell verknüpft werden. Dabei wird über die Datenauflistung iteriert und HTML basierend auf einer Elementvorlage hinzugefügt. Unterm Strich ist dieses Entwurfsmuster das Gleiche, das Sie für serverseitige ASP.NET-Programmierung wahrscheinlich schon seit Jahren verwenden. Wenn Sie schon einmal mit einem Repeater-Steuerelement gearbeitet haben, wissen Sie, was ich meine.
Um JavaScript-intensive Webanwendungen zu schreiben, benötigen Sie eine Hilfsbibliothek oder eine Art jQuery-Plug-in, die/das Ihnen mit HTML-Vorlagen hilft. Konzeptionell stellen Sie eine HTML-Vorlage mit Platzhaltern für die Datenbindung bereit, die Bibliothek ruft die Daten ab und bindet sie.
Eine Zeit lang schien es, dass die von Microsoft ursprünglich entwickelte jQuery-HTML-Vorlage die naheliegende Lösung für derartige Probleme sei. Inzwischen hat sich aber eine andere Bibliothek ins Rampenlicht geschoben: Knockout. Heute ist Knockout wahrscheinlich der De-facto-Standard...