Forms over Data mit Knockout.js: Die freie MVVM-JavaScript-Bibliothek im Praxiseinsatz
()
About this ebook
Dieses DevBook führt in die Thematik um Knockout.js ein. Dabei steht ein praxisrelevanter Umgang mit der Bibliothek im Vordergrund. Nach dem Studium des Buches sollten Sie in der Lage sein, Knockout.js in eigenen JavaScipt-Frontends einzusetzen, sämtliche HTML-Eingabeelemente zu nutzen und Daten dynamisch von einem Server nachzuladen und darzustellen.
Related to Forms over Data mit Knockout.js
Related ebooks
Software entwickeln mit C#, WPF und dem MVVM-Konzept Rating: 0 out of 5 stars0 ratingsJavaScript auf dem Server Rating: 0 out of 5 stars0 ratingsJavaScript für Java-Entwickler Rating: 0 out of 5 stars0 ratingsSpring: Vier Perspektiven auf Framework und Ökosystem Rating: 0 out of 5 stars0 ratingsMicrosoft AJAX: AJAX Libary, ASP .NET 2.0 Extensions, AJAX Control Toolkit Rating: 0 out of 5 stars0 ratingsWebanwendungen erstellen mit Vue.js: MVVM-Muster für konventionelle und Single-Page-Webseiten Rating: 0 out of 5 stars0 ratingsVue.js für alle: Wissenswertes für Einsteiger und Experten Rating: 0 out of 5 stars0 ratingsXtend beyond Java: DSL für mobile Business-Apps Rating: 0 out of 5 stars0 ratingsSingle-Page-Web-Apps: JavaScript im Einsatz: Webseiten erstellen mit AngularJS, Meteor und jQuery Mobile Rating: 0 out of 5 stars0 ratingsDynamic Proxies: Effizient programmieren Rating: 0 out of 5 stars0 ratingsEnterprise Java Web Services Rating: 0 out of 5 stars0 ratingsModerne Webanwendungen mit AngularJS Rating: 0 out of 5 stars0 ratingsJava FX - Status Quo: Status Quo Rating: 0 out of 5 stars0 ratingsJavaScript und TypeScript für C#-Entwickler Rating: 0 out of 5 stars0 ratingsDurchstarten mit React: Web-Apps einfach und modular entwickeln Rating: 0 out of 5 stars0 ratingsMQL: Eine hierarchische Abfragesprache mit TypeScript erstellen Rating: 0 out of 5 stars0 ratingsJava 7: Fork-Join-Framework und Phaser Rating: 0 out of 5 stars0 ratingsMagento Entwicklung: Themes, Widgets und Eigene Entitäten Rating: 0 out of 5 stars0 ratingsDie Serverwelt von Node.js Rating: 0 out of 5 stars0 ratingsSoftware Development Trends: Wegweisende Beiträge für eine neue IT: Wegweisende Beiträge für eine neue IT Rating: 0 out of 5 stars0 ratingsAufsetzen, Testen und Betrieb einer Android-App Rating: 0 out of 5 stars0 ratingsHTML 5 meets GWT Rating: 0 out of 5 stars0 ratingsCanvas kurz & gut Rating: 0 out of 5 stars0 ratingsBig Data: Datenverarbeitung basierend auf MOM und SQL Rating: 0 out of 5 stars0 ratingsjQuery Mobile: Einfach mobile Web-Apps entwickeln Rating: 0 out of 5 stars0 ratingsCSS: Grundlagen und Best Practices Rating: 0 out of 5 stars0 ratingsAngularJS: Testing und Best Practices Rating: 5 out of 5 stars5/5Grails: Webanwendungen mit Groovy und Grails schnell+kompakt Rating: 0 out of 5 stars0 ratingsJavaScript und Ajax: Das Praxisbuch für Web-Entwickler Rating: 0 out of 5 stars0 ratingsApache Tapestry: Einstieg in die komponentenorientierte Webentwicklung Rating: 0 out of 5 stars0 ratings
Technology & Engineering For You
Elektrokonstruktion: Elektrotechnik und Automation Rating: 0 out of 5 stars0 ratingsLexikon der Symbole und Archetypen für die Traumdeutung Rating: 5 out of 5 stars5/5Projektmanagement für Anfänger: Grundlagen, -begriffe und Tools Rating: 0 out of 5 stars0 ratingsKünstliche Intelligenz: Die vierte industrielle Revolution Rating: 0 out of 5 stars0 ratingsDas ultimative Sprachenlernbuch: Lernen Sie eine Sprache auf Profi-Niveau in 1 Jahr! Rating: 0 out of 5 stars0 ratingsPiano ohne Noten: Einführung ins freie Spielen auf Klavier und Keyboard Rating: 0 out of 5 stars0 ratingsFremdenergie: Die umfassende Analyse und Lösung fremdenergetischer Probleme Rating: 0 out of 5 stars0 ratingsDer perfekte Fahrrad Mechaniker: Wartung, Reparatur, Pflege - mit Videos Rating: 0 out of 5 stars0 ratingsLean Production - Grundlagen: Das Prinzip der schlanken Produktion verstehen und in der Praxis anwenden. Schlank zur Wertschöpfung! Rating: 0 out of 5 stars0 ratingsHypnotische Trance als therapeutische Chance: > aus den Erfahrungen eines ganzheitlich arbeitenden Heilpraktikers < Rating: 0 out of 5 stars0 ratingsDrohnen selber bauen & tunen: Ohne Vorkenntnisse: Drohne, Quadrocopter, Multicopter: Schritt für Schritt selbst gebaut. Rating: 0 out of 5 stars0 ratingsSpracherkennung für Autoren Rating: 0 out of 5 stars0 ratingsAgiles Projektmanagement: Scrum für Einsteiger Rating: 0 out of 5 stars0 ratingsEnergieeinsparmöglichkeiten an Bestandsgebäuden: Ein Praxisbeispiel Rating: 0 out of 5 stars0 ratings...Als die Noten laufen lernten...Band 2: Kabarett-Operette-Revue-Film-Exil. Unterhaltungsmusik bis 1945 Rating: 0 out of 5 stars0 ratingsTüröffnung Rating: 0 out of 5 stars0 ratingsHochfrequenz-Messpraxis: Zweckmäßige und kostengünstige Messverfahren für Ausbildung, Labor und Hobby Rating: 0 out of 5 stars0 ratingsMessmittelmanagement und Kalibrierung: Edition 2020 Rating: 5 out of 5 stars5/5Panzerketten: Die Gleisketten der deutschen Kettenfahrzeuge des Zweiten Weltkrieges Rating: 5 out of 5 stars5/5Spannung, Strom, Leistung und Frequenz: Kompendium Messtechnik und Sensorik, Teil 4 Rating: 5 out of 5 stars5/5Psychologie für Eilige: Alles Wichtige über Psychologie Rating: 0 out of 5 stars0 ratingsTechnik: Skriptsammlung zum Unterricht Rating: 0 out of 5 stars0 ratings
Reviews for Forms over Data mit Knockout.js
0 ratings0 reviews
Book preview
Forms over Data mit Knockout.js - Tilman Börner
Knockout.js: Das MVVM-Framework
Sie ist klein, aber unglaublich mächtig. Sie ist gewöhnungsbedürftig, aber irgendwie auch genial. Knockout.js ist in jedem Fall eine JavaScript-Bibliothek, die dabei hilft, Daten, Logik und Darstellung sauber voneinander zu trennen.
Und Trennung ist wichtig. Unzählige Projekte scheitern irgendwann und müssen neu geschrieben werden, weil der Code ein in sich verwobenes Knäuel an Methodenaufrufen ist. Da hilft auch die Objektorientierung nicht automatisch weiter. Erst wer sich an größere Design Pattern wie Model-View-Controller oder Model-View-ViewModel hält, schafft die Trennung. Der geringe Mehraufwand bringt im Endeffekt aber viele Vorteile mit sich: Logik und Datenverarbeitung sind testbar, da sie auch ohne Oberfläche ansprechbar sind, und es lässt sich auf die Logik recht einfach eine andere Oberfläche setzen, wenn beispielsweise plötzlich eine mobile Variante einer Website gefordert wird.
Außerdem können mehrere Entwickler gleichzeitig an verschiedenen Einheiten entwickeln, ohne sich ins Gehege zu kommen.
Knockout.js ist ein Framework, dessen Ziel es ist, für genau diese Trennung zu sorgen. Es handelt sich um ein Model-View-ViewModel-Framework. In der Bezeichnung stecken die drei Komponenten, aus denen es besteht:
View
Die View legt fest, wo welches Control einer Seite platziert sein soll und welches Aussehen es hat. Im Zusammenhang mit Knockout ist das eine Webseite, die per HTML und CSS beschrieben wird.
Model
Das Model ist der Teil im Programm, der sich um die Daten kümmert, die angezeigt werden sollen. Es liest beispielsweise Datensätze aus einer Datenbank, schreibt sie zurück und so weiter.
ViewModel
Das ViewModel ist das Modul, das auf Eingabeaufforderungen aus der View reagiert und Daten an die View zurückschickt. Es stellt sozusagen die Weichen für die Daten, die aus der Datenbank kommen, und sorgt dafür, dass sie im richtigen Gleis – also dem richtigen Control – einlaufen.
SinglePageAppAbbildung 1: So fließen die Daten in einer Single-Page-Anwendung.
Knockout.js vollzieht diese Trennung – wie der Name schon vermuten lässt – für die Sprache JavaScript.
Die Dokumentation von Knockout.js auf der Website http://Knockoutjs.com ist schon recht gut. Trotzdem stolpert man über das ein oder andere Problem, das nicht von der Dokumentation behandelt wird.
Knockout.js ist selbst eine JavaScript-Bibliothek und wird ganz einfach über eine Zeile wie
in eine HTML-Seite eingebunden. Dann sorgt Knockout.js im Hintergrund dafür, dass Events verarbeitet und Daten zurückgegeben werden.
Ein erstes kleines Beispiel soll das illustrieren.
-//W3C//DTD HTML 4.01 Transitional//EN>
type=text/javascript
>
var viewModel =
{
lastname
: ko.observable(Gertrud
)
}
ko.applyBindings(viewModel);
knockout-2.0.0.0.js muss natürlich im selben Verzeichnis liegen wie die HTML-Datei. Wenn nicht, muss der Pfad zu ihr angepasst werden.
Was passiert in dieser Webseite? Die HTML-Datei ist eine View. Alles, was nicht innerhalb der script-Tags steht, gehört dazu. In diesem Beispiel ist die Logik, sprich das JavaScript, in die View eingebettet. Bei größeren Views empfiehlt sich natürlich, den Code in einer eigenen js-Datei auszugliedern.
Neben html, head, title und body gehört dazu insbesondere die Zeile mit dem div-Tag. Diese Zeile definiert ein einfaches Label-Control, also die Anzeige eines Strings.
Die Teile der Datei, die in die script-Tags eingebettet sind, enthalten einmal die Referenz zur Knockout-Bibliothek und dann noch Code, der die Logik des Beispiels ausmacht.
Im Gegensatz zu anderen Bibliotheken bedarf es immer eines ViewModels – im Beispiel durch die Variable viewModel festgelegt.
Im ViewModel wird eine Observable (Funktion) mit Namen lastname über ko.observable() definiert. ko.observable(Gertrud
) legt den Anfangswert auf Gertrud fest. ko.observable() ist eine Funktion von Knockout.js, die dafür sorgt, dass Änderungen an dem Feld an die View übermittelt werden und umgekehrt.
Um den Knockout.js-Mechanismus in Gang zu setzen, damit also aus dem div-Tag eine Art Label wird, bedarf es noch eines Aufrufs von
ko.applyBindings(viewModel);
Die Zeile verbindet ko.observable() im ViewModel mit den Kontrollelementen in der View. Welche Daten wohin müssen, wird in der View durch das Attribut data-bind festgelegt. Sie sehen das im div-Tag:
data-bind=text: lastname
Das Attribut koppelt die Eigenschaft