Worin besteht der klügste Weg, eine JavaScript-Anwendung zu
entwickeln? JavaScript Patterns hilft dem Leser bei der
Beantwortung dieser Frage mit zahlreichen Code-Patterns und
Best-Practices-Beispielen.
Wenn JavaScript-Programmierer nach Lösungen für ihre
JavaScript-Objekte, -Funktionen und Vererbungen suchen, dann sind
die Entwurfsmuster und Code-Templates in diesem Buch genau das, was
sie für eine professionelle Arbeit benötigen.
Ebenso werden in dem Buch Empfehlungen für die bestmögliche
Implementierung der Patterns gegeben, immer verbunden mit
praxisnahen Beispielen. Darüber hinaus lernt der Leser wichtige
Anti-Patterns kennen.
"Das vorliegende Buch bereitet das an sich sperrige Thema nicht nur sehr verständlich für Design-Pattern-Einsteiger auf, sondern sorgt auch dafür, dass man sich den Stoff merkt. [...] [Es] besticht durch die Vielzahl seiner Beispiele, darunter auch solche für Fortgeschrittene. So findet der Leser hier neben Information pur auch ganz viele Anregungen." - www.php-nuke.de, August 2011 Lesen Sie die ausführliche Rezension unter: http://php-nuke.de/index.php?option=com_content&view=article&id=16&Itemid=9
"Das vorliegende Buch bereitet das an sich sperrige Thema nicht nur sehr verständlich für Design-Pattern-Einsteiger auf, sondern sorgt auch dafür, dass man sich den Stoff merkt. [...] [Es] besticht durch die Vielzahl seiner Beispiele, darunter auch solche für Fortgeschrittene. So findet der Leser hier neben Information pur auch ganz viele Anregungen." - www.php-nuke.de, August 2011 Lesen Sie die ausführliche Rezension unter: hier "Geeignet bis Pflichtlektüre für Profis." - iX, 01/2012
Stoyan Stefanov ist Web-Entwickler bei Yahoo!, arbeitet an YUI mit, er hält Vorträge und bloggt. Zudem ist er an O¿Reilly-Büchern als Autor, Koautor und Fachlektor beteiligt. Stoyan ist Vater des Bildoptimierungs-Tools smush.it und Architekt des Performance-Optimierungstools YSlow 2.0 von Yahoo.
Inhaltsangabe
Inhalt ... 7 Vorwort ... 13 Zielgruppe dieses Buches ... 13 Konventionen in diesem Buch ... 14 Verwendung der Codebeispiele ... 14 Danksagungen ... 15 Quellen ... 15 Leseempfehlungen ... 15 Kapitel 1 – Einführung ... 17 Muster ... 17 JavaScript: Konzepte ... 19 Objektorientiert ... 19 Keine Klassen ... 20 Prototypen ... 20 Umgebung ... 21 ECMAScript 5 ... 21 JSLint ... 22 Die Konsole ... 22 Kapitel 2 – Grundlagen ... 25 Wartbaren Code schreiben ... 25 Wenige globale Variablen verwenden ... 26 Das Problem mit globalen Variablen ... 27 Nebenwirkungen eines vergessenen var ... 28 Zugriff auf das globale Objekt ... 29 Single-var-Muster ... 30 Hoisting: Ein Problem mit verstreuten vars ... 31 for-Schleifen ... 32 for-in-Schleifen ... 34 Eingebaute Prototypen (nicht) erweitern ... 36 switch-Muster ... 37 Implizite Typecasts vermeiden ... 37 eval() vermeiden ... 38 Zahlen umwandeln mit parseInt() ... 39 Code-Richtlinien ... 40 Einrücken ... 40 Geschweifte Klammern ... 41 Position der öffnenden Klammer ... 42 Leerraum ... 43 Namenskonventionen ... 44 Konstruktoren mit Großbuchstaben beginnen ... 45 Wörter trennen ... 45 Andere Namens-Muster ... 45 Kommentare schreiben ... 47 Eine API-Dokumentation schreiben ... 47 YUIDoc-Beispiel ... 48 Schreiben, um gelesen zu werden ... 51 Peer Reviews ... 52 Minifizieren … in der Produktionsumgebung ... 53 JSLint nutzen ... 54 Zusammenfassung ... 55 Kapitel 3 – Literale und Konstruktoren ... 57 Objekt-Literale ... 57 Die Objekt-Literal-Syntax ... 58 Objekte aus einem Konstruktor ... 59 Object-Konstruktor-Überraschung ... 59 Eigene Konstruktor-Funktionen ... 60 Rückgabewerte von Konstruktoren ... 62 Muster zum Erzwingen von new ... 62 Namenskonventionen ... 63 that verwenden ... 63 Selbst aufrufender Konstruktor ... 64 Array-Literal ... 65 Die Array-Literal-Syntax ... 65 Kuriositäten im Array-Konstruktor ... 65 Auf »Array-Haftigkeit« prüfen ... 66 JSON ... 67 Mit JSON arbeiten ... 67 Regexp-Literal ... 68 Regexp-Literal-Syntax ... 69 Wrapper für Primitive ... 70 Fehler-Objekte ... 72 Zusammenfassung ... 72 Kapitel 4 – Funktionen ... 75 Hintergrund ... 75 Mehrdeutige Terminologie ... 76 Deklarationen versus Ausdrücke: Namen und Hoisting ... 77 name-Eigenschaft von Function ... 78 Funktions-Hoisting ... 79 Callback-Muster ... 81 Ein Callback-Beispiel ... 81 Callbacks und Scope ... 83 Asynchrone Event Listener ... 84 Timeouts ... 85 Callbacks in Bibliotheken ... 85 Funktionen zurückgeben ... 86 Selbst-definierende Funktionen ... 86 Immediate Function ... 88 Parameter einer Immediate Function ... 89 Rückgabewerte aus Immediate Functions ... 90 Vorteile und Anwendungsfälle ... 91 Immediate-Object-Initialisierung ... 92 Verzweigungen beim Initialisieren (Init-Time Branching) ... 93 6.8;Funktions-Eigenschaften – Ein Memoisierungs-Muster;95 Konfigurations-Objekte ... 96 Curry ... 98 Anwenden einer Funktion ... 98 Partielle Anwendung ... 99 Currying ... 100 Wann man Currying nutzt ... 102 Zusammenfassung ... 103 Kapitel 5 – Objekt-Erzeugungs-Muster ... 105 Namensraum-Muster ... 105 Namensraum-Funktion ... 107 Abhängigkeiten deklarieren ... 109 Private Eigenschaften und Methoden ... 110 Private Member ... 110 Bevorzugte Methoden ... 111 Privacy-Lücken ... 111 Objekt-Literale und Privacy ... 113 Eigenschaften und Privacy ... 113 Private Funktionen als öffentliche Methoden bereitstellen (Revelation-Muster) ... 114 Modul-Muster ... 115 Bereitstellungs-Modul-Muster ... 117 Module, die Konstruktoren erzeugen ... 118 Globale Variablen in ein Modul importieren ... 119 Sandbox-Muster ... 119 Ein globaler Konstruktor ... 120 Module hinzufügen ... 121 Den Konstruktor implementieren ... 122 Statische Member ... 124 Öffentliche statische Member ... 124 Private statische Member ... 126 Objekt-Konstanten ... 127 Verkettungs-Muster ... 129 Vor- und Nachteile des Verkettungs-Musters ... 130 method()-Methode ... 130 Zusammenfassung ... 132 Kapitel 6 – Muster zum Wiederverwenden von Code ... 133 Klassische versus moderne Vererbungs-Muster ... 133 Erwartete Ergebnisse bei klassischer Vererbung ... 134 8.3;Klassisches Muster Nr. 1 – Das Standard-Muster;135 Der Prototypen-Kette folgen ... 135 Nachteile bei Muster Nr. 1 ... 138 8.4;Klassisches Muster Nr. 2 – Rent-a-Constructor;138 Die Prototypen-Kette ... 139 Mehrfachvererbung bei geliehenen Konstruktoren ... 140 Vor- und Nachteile des Geliehener-Konstruktor-Musters ... 141 8.5;Klassisches Muster Nr. 3 – Rent-and-Set-Prototyp;141 8.6;Klassisches Muster Nr. 4 – Gemeinsamer Prototyp;143 8.7;Klassisches Muster Nr. 5 – Ein temporärer Konstruktor;144 Die Superklasse speichern ... 145 Den Konstruktor-Zeiger zurücksetzen ... 146 Klass ... 147 Prototypische Vererbung ... 149 Diskussion ... 151 Ergänzung in ECMAScript 5 ... 151 Vererbung durch das Kopieren von Eigenschaften ... 152 Mix-Ins ... 154 Methoden ausleihen ... 155 Beispiel: Von Array ausleihen ... 156 Ausleihen und Binden ... 156 Function.prototype.bind() ... 157 Zusammenfassung ... 158 Kapitel 7 – Entwurfsmuster ... 159 Singleton ... 159 new verwenden ... 160 Instanz in einer statischen Eigenschaft ... 161 Instanz in einem Closure ... 162 Fabrik/Factory ... 164 Eingebaute Object-Fabrik ... 166 Iterator ... 167 Dekorierer/Decorator ... 169 Anwendung ... 169 Implementierung ... 170 Implementierung mit einer Liste ... 172 Strategie/Strategy ... 174 Beispiel: Datenvalidierung ... 174 9.6;Fassade/Façade;177 Stellvertreter/Proxy ... 178 Ein Beispiel ... 179 Ein Video-Erweiterer ... 179 Ohne Stellvertreter ... 180 HTML ... 180 Event Handler ... 181 videos-Objekt ... 182 http-Objekt ... 183 Auftritt des Stellvertreters ... 183 Stellvertreter als Cache ... 186 Vermittler/Mediator ... 186 Vermittler-Beispiel ... 187 Beobachter/Observer ... 190 Beispiel Nr. 1: Zeitungs-Subskription ... 190 Beispiel Nr. 2: Das Tastatur-Spiel ... 194 Zusammenfassung ... 197 Kapitel 8 – DOM- und Browser-Muster ... 199 Separation of Concerns ... 199 DOM Scripting ... 201 DOM-Zugriff ... 201 Veränderungen am DOM ... 202 Events ... 204 Event Handling ... 204 Event Delegation ... 206 Langlaufende Skripten ... 207 setTimeout() ... 208 Web Workers ... 208 Remote Scripting ... 209 XMLHttpRequest ... 209 JSONP ... 211 JSONP-Beispiel: Tic-Tac-Toe ... 211 Frames und Image Beacons ... 214 JavaScript-Code ausliefern ... 214 Skripten kombinieren ... 214 Minifizieren und Komprimieren ... 215 Expires-Header ... 216 Ein CDN verwenden ... 216 Strategien zum Laden ... 216 Die Position des -Elements ... 217 HTTP Chunking ... 218 Dynamisches -Element für nicht-blockierende Downloads ... 220 Das -Element anfügen ... 221 Lazy-Loading ... 221 Loading on Demand ... 222 JavaScript im Voraus laden ... 224 Zusammenfassung ... 225 Index ... 227
Sitemap: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20