Biblioteka jQuery : sprawdzone wzorce projektowe / Thodoris

Transkrypt

Biblioteka jQuery : sprawdzone wzorce projektowe / Thodoris
Biblioteka jQuery : sprawdzone wzorce projektowe / Thodoris Greasidis.
– Gliwice, cop. 2017
Spis treści
O autorze
9
O recenzencie
11
Przedmowa
13
Rozdział 1. Utrwalenie wiedzy o bibliotece jQuery i wzorcu
Kompozyt
Biblioteka jQuery i obsługa skryptowa modelu DOM
Modyfikowanie modelu DOM za pomocą biblioteki jQuery
Wzorzec Kompozyt
Sposób wykorzystania wzorca Kompozyt przez bibliotekę jQuery
Porównanie korzyści uzyskiwanych w przypadku rezygnacji ze zwykłego
interfejsu API modelu DOM
Użycie wzorca Kompozyt do projektowania aplikacji
Wzorzec Iterator
Sposób wykorzystania wzorca Iterator przez bibliotekę jQuery
Powiązanie wzorca Iterator z wzorcem Kompozyt
Zastosowanie wzorca Iterator
Podsumowanie
19
20
21
26
26
29
31
34
34
36
36
38
Rozdział 2. Wzorzec Obserwator
Wprowadzenie do wzorca Obserwator
Sposób wykorzystania wzorca Obserwator przez bibliotekę jQuery
Demonstracja przykładowego przypadku użycia
Porównanie wzorca Obserwator z użyciem atrybutów zdarzeń
Zapobieganie „wyciekom" pamięci
Wprowadzenie do wzorca Obserwator ze zdarzeniami delegowanymi
Upraszczanie kodu przez wzorzec Obserwator ze zdarzeniami
delegowanymi
Porównanie korzyści związanych z wykorzystaniem pamięci
Podsumowanie
39
39
41
47
53
56
57
Rozdział 3. Wzorzec Publikowanie/Subskrybowanie
Wprowadzenie do wzorca Publikowanie/Subskrybowanie
Różnice między wzorcem Publikowanie/Subskrybowanie i wzorcem
Obserwator
Adaptowanie wzorca Publikowanie/Subskrybowanie przez bibliotekę
61
62
58
59
60
63
jQuery
Zdarzenia niestandardowe w bibliotece jQuery
Implementowanie schematu wzorca Publikowanie/Subskrybowanie
za pomocą zdarzeń niestandardowych
Demonstracja przykładowego przypadku użycia
Użycie wzorca Publikowanie/Subskrybowanie w przykładzie panelu
sterowania
Rozszerzanie implementacji
Użycie dowolnego obiektu jako brokera
Zastosowanie przestrzeni nazw zdarzeń niestandardowych
Podsumowanie
64
64
65
68
70
70
71
Rozdział 4. Dziel i zwyciężaj za pomocą wzorca Moduł
Moduły i przestrzenie nazw
Hermetyzowanie integralnych części implementacji
Unikanie zmiennych globalnych za pomocą przestrzeni nazw
Korzyści oferowane przez wzorce modułów i przestrzeni nazw
Powszechna akceptacja
Wzorzec Literał obiektu
Wzorzec Moduł
Blok konstrukcyjny wzorca IIFE
Prosty wzorzec Moduł IIFE
Wariant wzorca Moduł z przestrzenią nazw jako parametrem
Wariant wzorca Moduł zawartego we wzorcu IIFE
Wzorzec Moduł udostępniający
Użycie funkcji Strict Mode języka ECMAScript 5
Wprowadzenie do modułów języka ECMAScript 6
Użycie modułów w aplikacjach jQuery
Główny moduł dashboard
Moduł categories
Moduł informationBox
Moduł counter
Przegląd implementacji
Podsumowanie
73
73
74
74
75
75
76
78
78
80
82
85
86
88
88
90
91
92
93
94
95
96
Rozdział 5. Wzorzec Fasada
Wprowadzenie do wzorca Fasada
Zalety wzorca Fasada
Sposób adaptacji wzorca Fasada przez bibliotekę jQuery
Interfejs API biblioteki jQuery operacji przechodzenia w obrębie
modelu DOM
Interfejs API operacji modyfikowania i uzyskiwania dostępu
do właściwości
Zastosowanie wzorca Fasada w aplikacjach
Podsumowanie
97
97
98
99
64
65
100
103
104
107
Rozdział 6. Wzorce Budowniczy i Fabryka
Wprowadzenie do wzorca Fabryka
Wykorzystanie wzorca Fabryka przez bibliotekę jQuery
Użycie wzorca Fabryka w aplikacjach
Wprowadzenie do wzorca Budowniczy
Wykorzystanie wzorca Budowniczy przez interfejs API biblioteki jQuery
Zastosowanie wzorca Budowniczy wewnętrznie przez bibliotekę jQuery
Wykorzystanie wzorca Budowniczy w aplikacjach
Podsumowanie
109
109
110
112
116
117
120
122
126
Rozdział 7. Wzorce asynchronicznego przepływu sterowania
Programowanie z wykorzystaniem wywołań zwrotnych
Użycie prostych wywołań zwrotnych w języku JavaScript
Konfigurowanie wywołań zwrotnych jako właściwości obiektu
Zastosowanie wywołań zwrotnych w aplikacjach opartych na bibliotece
jQuery
Tworzenie metod akceptujących wywołania zwrotne
Organizowanie wywołań zwrotnych
Wprowadzenie do pojęcia obiektów Promise
Użycie obiektów Promise
Zagadnienia zaawansowane
Tworzenie łańcucha obiektów Promise
Obsługa zgłaszanych błędów
Łączenie obiektów Promise
Sposób użycia obiektów Promise przez bibliotekę jQuery
Transformacja obiektów Promise w obiekty innych typów
Podsumowanie zalet obiektów Promise
Podsumowanie
127
128
129
129
130
132
133
136
138
143
143
145
146
147
148
149
150
Rozdział 8. Wzorzec Atrapa obiektu
Wprowadzenie do wzorca Atrapa obiektu
Użycie atrap obiektów w aplikacjach opartych na bibliotece jQuery
Definiowanie faktycznych wymagań usługi
Implementowanie atrapy usługi
Użycie atrapy usługi
Podsumowanie
151
151
153
154
155
157
158
Rozdział 9. Tworzenie szablonów klienckich
Wprowadzenie do biblioteki Underscore.js
Użycie szablonów biblioteki Underscore.js w aplikacjach
Wprowadzenie do biblioteki Handlebars.js
Użycie biblioteki Handlebars.js w aplikacjach
Asynchroniczne pobieranie szablonów HTML
Adaptowanie dynamicznego ładowania szablonów w istniejącej
159
160
161
164
166
169
implementacji
Moderacja to najlepsza rzecz
Podsumowanie
170
172
172
Rozdział 10. Wzorce do projektowania dodatków i widżetów
Wprowadzenie do dodatków biblioteki jQuery
Stosowanie zasad obowiązujących w bibliotece jQuery
Użycie metody $.noConflict()
Opakowywanie z wykorzystaniem wzorca IIFE
Tworzenie dodatków do wielokrotnego wykorzystania
Akceptowanie parametrów konfiguracyjnych
Tworzenie stanowych dodatków biblioteki jQuery
Implementowanie stanowego dodatku biblioteki jQuery
Usuwanie instancji dodatku
Implementowanie metod pobierających i ustawiających
Użycie dodatku w aplikacji panelu sterowania
Użycie projektu dodatków jQuery Boilerplate
Dodawanie metod do dodatku
Wybieranie nazwy
Podsumowanie
173
174
174
177
177
179
179
182
183
185
186
187
188
190
191
192
Rozdział 11. Wzorce optymalizacji
Umieszczanie skryptów w pobliżu końca kodu strony
Tworzenie pakunków i minifikowanie zasobów
Użycie parametrów wzorca IIFE
Zastosowanie sieci CDN
Zastosowanie interfejsu API sieci CDN JSDelivr
Optymalizowanie wspólnego kodu w JavaScripcie
Tworzenie lepszych pętli for
Tworzenie wydajnych selektorów CSS
Tworzenie efektywnego kodu jQuery
Minimalizowanie operacji przechodzenia w obrębie modelu DOM
Nie przesadzaj
Usprawnianie operacji modyfikacji modelu DOM
Użycie obserwatorów ze zdarzeniami delegowanymi
Użycie metody $.noop()
Użycie dodatku $.single
„Leniwe" ładowanie modułów
Podsumowanie
193
194
194
195
196
197
197
197
198
199
199
201
201
205
205
206
208
210
Skorowidz
213
oprac. BPK