jQuery w akcji. Wydanie III - Helion
Tytuł oryginału: jQuery in Action, Third Edition
Tłumaczenie: Piotr Pilch
ISBN: 978-83-283-2275-2
stron: 528, Format: 168x237, okładka: miękka
Data wydania: 2016-05-23
Księgarnia: Helion
Cena książki: 89,00 zł
Lekka biblioteka jQuery znacząco ułatwia kodowanie w JavaScripcie.
Dzięki niej programiści nie muszą już ręcznie zarządzać obsługą selektorów CSS czy nawigacją w modelu DOM, a praca nad animacjami stała się o wiele łatwiejsza. Co ważne, projekt ten wciąż się rozwija: w bibliotece jQuery 3 dodano kolejne funkcje, które sprawiły, że praca projektanta aplikacji internetowych stała się bezproblemowa i efektywna. Okazuje się, że wobec rosnącego znaczenia JavaScriptu w tworzeniu aplikacji internetowych umiejętność posługiwania się jQuery staje się bardzo ważnym atutem na rynku pracy.
Jeśli znasz choćby podstawy JavaScriptu i chciałbyś możliwie szybko nabrać biegłości w posługiwaniu się jQuery, trzymasz w dłoni książkę dla siebie. Dzięki temu zwięzłemu przewodnikowi nauczysz się płynnie realizować zadania, które pojawiają się niemal zawsze podczas tworzenia aplikacji internetowych. Dowiesz się, jak nawigować w obrębie modelu DOM, obsługiwać zdarzenia, tworzyć dodatki do jQuery i żądania Ajax, a nawet przeprowadzać testy jednostkowe kodu. Oczywiście, nie zabrakło tu rzeczywistych przykładów kodu, ilustrujących każde omawiane zagadnienie. Ponadto niniejsze wydanie rozbudowano o rozdziały, w których omówiono współdziałanie jQuery z innymi narzędziami i środowiskami, a także budowę nowoczesnych aplikacji z jedną stroną w środowisku Backbone.js.
Dzięki tej książce poznasz:
- budowę, przeznaczenie i zasady funkcjonowania biblioteki jQuery
- nowe praktyczne możliwości biblioteki jQuery 3
- model DOM i obsługę zdarzeń
- sposoby tworzenia animacji i inne efekty związane z szatą graficzną aplikacji
- technologię Ajax i podstawy jej obsługi
- sposoby na testy jednostkowe i poprawę wydajności kodu
Poznaj jQuery, korzystaj z tej biblioteki i ciesz się nią!
Bear Bibeault — programuje od ponad trzydziestu lat. Uzyskał dwa stopnie naukowe z dziedziny elektrotechniki, jest też współautorem licznych książek dotyczących programowania.
Yehuda Katz — od wielu lat angażuje się w projekty związane z oprogramowaniem open source. Jest jednym z pierwszych twórców biblioteki jQuery oraz współtwórcą środowiska Ember.js.
Aurelio De Rosa — jest doświadczonym projektantem aplikacji internetowych i członkiem zespołu rozwijającego bibliotekę jQuery. Tworzy oprogramowanie internetowe z wykorzystaniem stosu WAMP oraz języków HTML5, CSS3, Sass, JavaScript i PHP.
Osoby które kupowały "jQuery w akcji. Wydanie III", wybierały także:
- ASP.NET MVC. Kompletny przewodnik dla programistów interaktywnych aplikacji internetowych w Visual Studio 86,77 zł, (26,90 zł -69%)
- jQuery, jQuery UI oraz jQuery Mobile. Receptury 57,74 zł, (17,90 zł -69%)
- PHP i jQuery. Techniki zaawansowane. Wydanie II 65,31 zł, (20,90 zł -68%)
- jQuery. Kurs video. Poziom drugi. Interaktywne banery i funkcjonalne menu 59,00 zł, (26,55 zł -55%)
- Vue.js w akcji 58,98 zł, (29,49 zł -50%)
Spis treści
jQuery w akcji. Wydanie III -- spis treści
Słowo wstępne do wydania trzeciego (15)
Słowo wstępne do wydania pierwszego (17)
Przedmowa (19)
Podziękowania (21)
O książce (23)
O autorach (27)
CZĘŚĆ I. BIBLIOTEKA JQUERY - PIERWSZE KROKI (29)
Rozdział 1. Wprowadzenie do biblioteki jQuery (31)
- 1.1. Pisz mniej, a rób więcej (32)
- 1.2. Przejrzysty kod JavaScript (34)
- 1.2.1. Oddzielanie zachowania od struktury (35)
- 1.2.2. Oddzielanie skryptu (36)
- 1.3. Instalowanie biblioteki jQuery (37)
- 1.3.1. Wybieranie właściwej wersji (37)
- 1.3.2. Zwiększanie wydajności przy użyciu sieci CDN (40)
- 1.4. Struktura biblioteki jQuery (42)
- 1.4.1. Tworzenie własnej wersji niestandardowej zmniejszającej wielkość pliku (43)
- 1.5. Fundamenty biblioteki jQuery (44)
- 1.5.1. Właściwości, narzędzia i metody (44)
- 1.5.2. Obiekt biblioteki jQuery (45)
- 1.5.3. Procedura obsługi zdarzenia gotowości dokumentu (47)
- 1.6. Podsumowanie (49)
CZĘŚĆ II. PODSTAWOWE SKŁADNIKI BIBLIOTEKI JQUERY (51)
Rozdział 2. Wybieranie elementów (53)
- 2.1. Wybieranie elementów do modyfikacji (54)
- 2.2. Podstawowe selektory (56)
- 2.2.1. Selektor "wszystko" (lub uniwersalny) (57)
- 2.2.2. Selektor identyfikatora (60)
- 2.2.3. Selektor klasy (61)
- 2.2.4. Selektor elementu (61)
- 2.3. Pobieranie elementów na podstawie ich hierarchii (62)
- 2.4. Wybieranie elementów za pomocą atrybutów (64)
- 2.5. Wprowadzenie do filtrów (68)
- 2.5.1. Filtry położenia (68)
- 2.5.2. Filtry elementów podrzędnych (69)
- 2.5.3. Filtry formularza (73)
- 2.5.4. Filtry treści (74)
- 2.5.5. Inne filtry (75)
- 2.5.6. Tworzenie filtrów niestandardowych (77)
- 2.6. Zwiększanie wydajności za pomocą kontekstu (80)
- 2.7. Sprawdzanie umiejętności przy użyciu ćwiczeń (81)
- 2.7.1. Ćwiczenia (82)
- 2.7.2. Rozwiązania (82)
- 2.8. Podsumowanie (83)
Rozdział 3. Przetwarzanie kolekcji biblioteki jQuery (85)
- 3.1. Generowanie nowych elementów HTML (86)
- 3.2. Zarządzanie kolekcją biblioteki jQuery (89)
- 3.2.1. Określanie wielkości zestawu (91)
- 3.2.2. Uzyskiwanie elementów zestawu (91)
- 3.2.3. Uzyskiwanie zestawów za pomocą relacji (96)
- 3.2.4. Dopasowywanie zestawu (101)
- 3.2.5. Jeszcze więcej sposobów użycia zestawu (110)
- 3.3. Podsumowanie (113)
Rozdział 4. Użycie właściwości, atrybutów i danych (115)
- 4.1. Definiowanie właściwości i atrybutów elementów (116)
- 4.2. Użycie atrybutów (119)
- 4.2.1. Pobieranie wartości atrybutów (119)
- 4.2.2. Ustawianie wartości atrybutów (120)
- 4.2.3. Usuwanie atrybutów (122)
- 4.2.4. Zabawa z atrybutami (123)
- 4.3. Modyfikowanie właściwości elementu (125)
- 4.4. Przechowywanie danych niestandardowych w elementach (128)
- 4.5. Podsumowanie (135)
Rozdział 5. Ożywianie stron za pomocą biblioteki jQuery (137)
- 5.1. Zmienianie stylów elementów (138)
- 5.1.1. Dodawanie i usuwanie nazw klas (138)
- 5.1.2. Uzyskiwanie i ustawianie stylów (143)
- 5.2. Określanie zawartości elementu (153)
- 5.2.1. Zastępowanie kodu HTML lub treści tekstowej (153)
- 5.2.2. Przenoszenie elementów (155)
- 5.2.3. Opakowywanie elementów i usuwanie ich opakowania (161)
- 5.2.4. Usuwanie elementów (165)
- 5.2.5. Powielanie elementów (167)
- 5.2.6. Zastępowanie elementów (168)
- 5.3. Obsługa wartości elementów formularza (170)
- 5.4. Podsumowanie (172)
Rozdział 6. Zdarzenia są tam, gdzie coś się dzieje (173)
- 6.1. Modele zdarzeń przeglądarek (174)
- 6.1.1. Model zdarzeń poziomu DOM Level 0 (175)
- 6.1.2. Model zdarzeń poziomu DOM Level 2 (183)
- 6.1.3. Model przeglądarki Internet Explorer (189)
- 6.2. Model zdarzeń biblioteki jQuery (189)
- 6.2.1. Dołączanie procedur obsługi zdarzeń w bibliotece jQuery (190)
- 6.2.2. Usuwanie procedur obsługi zdarzeń (198)
- 6.2.3. Inspekcja instancji obiektu Event (200)
- 6.2.4. Wyzwalanie procedur obsługi zdarzeń (201)
- 6.2.5. Metody skrócone (206)
- 6.2.6. Sposób tworzenia zdarzeń niestandardowych (210)
- 6.2.7. Określanie przestrzeni nazw dla zdarzeń (211)
- 6.3. Podsumowanie (212)
Rozdział 7. Demonstracja lokalizatora dysków DVD (215)
- 7.1. Praktyczne zastosowanie zdarzeń (i nie tylko) (216)
- 7.1.1. Filtrowanie dużych zestawów danych (217)
- 7.1.2. Tworzenie elementów za pomocą replikacji szablonu (219)
- 7.1.3. Tworzenie podstawowego kodu znaczników (221)
- 7.1.4. Dodawanie nowych filtrów (222)
- 7.1.5. Dodawanie szablonów kontrolek (225)
- 7.1.6. Usuwanie niepożądanych filtrów oraz inne zadania (227)
- 7.1.7. Wyświetlanie wyników (227)
- 7.1.8. Zawsze można jeszcze coś ulepszyć (229)
- 7.2. Podsumowanie (231)
Rozdział 8. Wzbogacanie stron przy użyciu animacji i efektów (233)
- 8.1. Wyświetlanie i ukrywanie elementów (234)
- 8.1.1. Implementowanie "modułu" umożliwiającego zwijanie (235)
- 8.1.2. Przełączanie stanu wyświetlania elementów (238)
- 8.2. Animowanie stanu wyświetlania elementów (238)
- 8.2.1. Stopniowe wyświetlanie i ukrywanie elementów (239)
- 8.2.2. Wprowadzenie do strony laboratorium efektów biblioteki jQuery (243)
- 8.2.3. Stopniowe rozjaśnianie i ściemnianie elementów (245)
- 8.2.4. Przesuwanie elementów w górę i w dół (248)
- 8.2.5. Zatrzymywanie animacji (249)
- 8.3. Dodawanie kolejnych funkcji sposobu animacji do biblioteki jQuery (251)
- 8.4. Tworzenie animacji niestandardowych (253)
- 8.4.1. Niestandardowa animacja skalowania (256)
- 8.4.2. Niestandardowa animacja efektu opadania (257)
- 8.4.3. Niestandardowa animacja efektu rozpraszania (258)
- 8.5. Animacje i kolejkowanie (260)
- 8.5.1. Jednocześnie wykonywane animacje (260)
- 8.5.2. Kolejkowanie funkcji do wykonania (262)
- 8.5.3. Wstawianie funkcji do kolejek efektów (268)
- 8.6. Podsumowanie (269)
Rozdział 9. Poza modelem DOM - funkcje narzędziowe biblioteki jQuery (271)
- 9.1. Użycie właściwości biblioteki jQuery (272)
- 9.1.1. Wyłączanie animacji (273)
- 9.1.2. Zmiana szybkości animacji (273)
- 9.1.3. Właściwość $.support (274)
- 9.2. Użycie innych bibliotek z biblioteką jQuery (275)
- 9.3. Modyfikowanie obiektów i kolekcji języka JavaScript (279)
- 9.3.1. Obcinanie łańcuchów (280)
- 9.3.2. Iteracja właściwości i kolekcji (281)
- 9.3.3. Filtrowanie tablic (283)
- 9.3.4. Translacja tablic (285)
- 9.3.5. Więcej zabawy z tablicami języka JavaScript (286)
- 9.3.6. Rozszerzanie obiektów (290)
- 9.3.7. Serializacja wartości parametrów (292)
- 9.3.8. Testowanie obiektów (296)
- 9.3.9. Analizowanie funkcji (299)
- 9.4. Różne funkcje narzędziowe (302)
- 9.4.1. Nie wykonując żadnego działania (302)
- 9.4.2. Sprawdzanie przynależności (303)
- 9.4.3. Wstępne wiązanie kontekstów funkcji (304)
- 9.4.4. Określanie wartości wyrażeń (306)
- 9.4.5. Zgłaszanie wyjątków (307)
- 9.5. Podsumowanie (308)
Rozdział 10. Komunikacja z serwerem z wykorzystaniem technologii Ajax (309)
- 10.1. Odświeżenie informacji o technologii Ajax (310)
- 10.1.1. Tworzenie instancji obiektu XHR (310)
- 10.1.2. Inicjowanie żądania (313)
- 10.1.3. Śledzenie postępu działań (314)
- 10.1.4. Uzyskiwanie odpowiedzi (314)
- 10.2. Ładowanie zawartości do elementów (315)
- 10.2.1. Ładowanie zawartości za pomocą kodu jQuery (317)
- 10.2.2. Ładowanie fragmentów dynamicznego kodu HTML (321)
- 10.3. Tworzenie żądań GET i POST (325)
- 10.3.1. Uzyskiwanie danych za pomocą metody GET (327)
- 10.3.2. Uzyskiwanie danych formatu JSON (329)
- 10.3.3. Dynamiczne ładowanie skryptu (330)
- 10.3.4. Tworzenie żądań metody POST (332)
- 10.3.5. Implementowanie kaskadowych elementów rozwijanych (333)
- 10.4. Przejmowanie pełnej kontroli nad żądaniem Ajax (338)
- 10.4.1. Tworzenie żądań Ajax z wszystkimi dodatkami (338)
- 10.4.2. Ustawianie wartości domyślnych żądania (342)
- 10.4.3. Obsługa zdarzeń Ajax (344)
- 10.4.4. Zaawansowane funkcje narzędziowe Ajax (348)
- 10.5. Podsumowanie (350)
Rozdział 11. Demonstracja formularza kontaktowego wykorzystującego technologię Ajax (351)
- 11.1. Funkcje projektu (352)
- 11.2. Tworzenie kodu znaczników (354)
- 11.3. Implementowanie kodu serwerowego PHP (355)
- 11.4. Sprawdzanie poprawności pól z wykorzystaniem technologii Ajax (357)
- 11.5. Jeszcze więcej zabawy z technologią Ajax (359)
- 11.5.1. Ukrywanie okna dialogowego (361)
- 11.6. Poprawianie komfortu pracy użytkownika za pomocą efektów (362)
- 11.6.1. Przełączanie efektów (362)
- 11.7. Uwaga dotycząca dostępności (363)
- 11.8. Podsumowanie (365)
CZĘŚĆ III. ZAAWANSOWANE ZAGADNIENIA (367)
Rozdział 12. Gdy biblioteka jQuery nie wystarcza, na ratunek przychodzą dodatki (369)
- 12.1. Dlaczego warto rozszerzać bibliotekę jQuery? (370)
- 12.2. Znajdowanie dodatków (371)
- 12.2.1. Metoda użycia (dobrze zaprojektowanego) dodatku (371)
- 12.2.2. Znakomite dodatki do zastosowania w projektach (375)
- 12.3. Wytyczne dotyczące tworzenia dodatku biblioteki jQuery (375)
- 12.3.1. Konwencje nazewnicze dotyczące plików i funkcji (376)
- 12.3.2. Uważaj na skrót $ (378)
- 12.3.3. Ujarzmianie złożonych list parametrów (378)
- 12.3.4. Pozostań przy jednej przestrzeni nazw (381)
- 12.3.5. Określanie przestrzeni nazw dla zdarzeń i danych (384)
- 12.3.6. Utrzymywanie możliwości tworzenia łańcucha metod (389)
- 12.3.7. Zapewnienie dostępu publicznego do ustawień domyślnych (389)
- 12.4. Demonstracja tworzenia pokazu slajdów w postaci dodatku biblioteki jQuery (392)
- 12.4.1. Definiowanie kodu znaczników (394)
- 12.4.2. Tworzenie dodatku Jqia Photomatic (396)
- 12.5. Tworzenie niestandardowych funkcji narzędziowych (403)
- 12.5.1. Tworzenie funkcji formatującej datę (404)
- 12.6. Podsumowanie (408)
Rozdział 13. Uniknięcie "piekła wywołań zwrotnych" za pomocą obiektu Deferred (409)
- 13.1. Wprowadzenie do obietnic (410)
- 13.2. Obiekty Deferred i Promise (414)
- 13.3. Metody obiektu Deferred (415)
- 13.3.1. Rozstrzyganie lub odrzucanie obiektu Deferred (415)
- 13.3.2. Wykonywanie funkcji podczas rozstrzygania lub odrzucania (417)
- 13.3.3. Metoda when() (420)
- 13.3.4. Powiadamianie o postępie procesu związanego z obiektem Deferred (423)
- 13.3.5. Śledzenie postępu (424)
- 13.3.6. Użycie obiektu Promise (426)
- 13.3.7. Krótkie omówienie metody then() (429)
- 13.3.8. Zawsze wykonuj procedurę obsługi zdarzeń (433)
- 13.3.9. Określanie stanu obiektu Deferred (433)
- 13.4. Stosowanie obietnic dla wszystkiego (434)
- 13.5. Podsumowanie (436)
Rozdział 14. Wykonywanie testów jednostkowych za pomocą biblioteki QUnit (437)
- 14.1. Dlaczego testowanie odgrywa ważną rolę? (438)
- 14.1.1. Dlaczego testowanie jednostkowe? (439)
- 14.1.2. Środowiska testowania jednostkowego kodu JavaScript (441)
- 14.2. Pierwsze kroki ze środowiskiem QUnit (442)
- 14.3. Tworzenie testów na potrzeby kodu synchronicznego (445)
- 14.4. Testowanie kodu za pomocą asercji (446)
- 14.4.1. Metody equal(), strictEqual(), notEqual() i notStrictEqual() (447)
- 14.4.2. Inne metody asercji (450)
- 14.4.3. Metoda asercji throws() (451)
- 14.5. Testowanie zadań asynchronicznych (453)
- 14.6. Opcje noglobals i notrycatch (455)
- 14.7. Grupowanie testów w modułach (456)
- 14.8. Konfigurowanie środowiska QUnit (458)
- 14.9. Przykładowy pakiet testów (459)
- 14.10. Podsumowanie (463)
Rozdział 15. Wykorzystanie biblioteki jQuery w dużych projektach (465)
- 15.1. Zwiększanie wydajności selektorów (467)
- 15.1.1. Unikanie selektora uniwersalnego (467)
- 15.1.2. Ulepszanie selektora klasy (468)
- 15.1.3. Nie nadużywaj parametru context (468)
- 15.1.4. Optymalizowanie filtrów (469)
- 15.1.5. Nie określaj przesadnie selektorów (471)
- 15.2. Organizowanie kodu w modułach (471)
- 15.2.1. Wzorzec oparty na literałach obiektowych (472)
- 15.2.2. Wzorzec oparty na modułach (473)
- 15.3. Ładowanie modułów za pomocą biblioteki RequireJS (475)
- 15.3.1. Rozpoczęcie pracy z biblioteką RequireJS (475)
- 15.3.2. Użycie biblioteki RequireJS z biblioteką jQuery (477)
- 15.4. Zarządzanie zależnościami za pomocą narzędzia Bower (479)
- 15.4.1. Rozpoczęcie pracy z narzędziem Bower (479)
- 15.4.2. Wyszukiwanie pakietu (481)
- 15.4.3. Instalowanie, aktualizowanie i usuwanie pakietów (481)
- 15.5. Tworzenie aplikacji z jedną stroną za pomocą środowiska Backbone.js (483)
- 15.5.1. Dlaczego należy używać środowiska MV*? (485)
- 15.5.2. Rozpoczęcie pracy ze środowiskiem Backbone.js (485)
- 15.5.3. Tworzenie aplikacji menedżera zadań do wykonania za pomocą środowiska Backbone.js (490)
- 15.6. Podsumowanie (500)
- 15.7. Zakończenie (502)
DODATKI (503)
Dodatek A. Język JavaScript, jaki musisz znać, choć być może tak nie jest (505)
- A.1. Podstawowe informacje o typie danych Object języka JavaScript (506)
- A.1.1. W jaki sposób powstają obiekty? (506)
- A.1.2. Właściwości obiektów (507)
- A.1.3. Literały obiektowe (509)
- A.1.4. Obiekty jako właściwości obiektu window (510)
- A.2. Funkcje jako "obywatele pierwszej klasy" (511)
- A.2.1. Wyrażenia funkcji i ich deklaracje (511)
- A.2.2. Funkcje jako wywołania zwrotne (513)
- A.2.3. Jakie jest przeznaczenie słowa kluczowego this? (514)
- A.2.4. Domknięcia (518)
- A.2.5. Wzorzec IIFE (520)
- A.3. Podsumowanie (522)
Skorowidz (523)