Szczegóły ebooka

jQuery w akcji. Wydanie III

jQuery w akcji. Wydanie III

Bear Bibeault, Yehuda Katz, Aurelio De Rosa

Ebook
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.

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)

  • Tytuł: jQuery w akcji. Wydanie III
  • Autor: Bear Bibeault, Yehuda Katz, Aurelio De Rosa
  • Tytuł oryginału: jQuery in Action, Third Edition
  • Tłumaczenie: Piotr Pilch
  • ISBN: 978-83-283-2276-9, 9788328322769
  • Data wydania: 2016-05-23
  • Format: Ebook
  • Identyfikator pozycji: jquer3
  • Wydawca: Helion