Tytuł oryginału: Mastering JavaScript Design …pdf.helion.pl/jswpz2/jswpz2.pdfJavaScript i wzorce...

28

Transcript of Tytuł oryginału: Mastering JavaScript Design …pdf.helion.pl/jswpz2/jswpz2.pdfJavaScript i wzorce...

Page 1: Tytuł oryginału: Mastering JavaScript Design …pdf.helion.pl/jswpz2/jswpz2.pdfJavaScript i wzorce projektowe. Programowanie dla zaawansowanych 20 JÚzyk JavaScript okazaï siÚ
Page 2: Tytuł oryginału: Mastering JavaScript Design …pdf.helion.pl/jswpz2/jswpz2.pdfJavaScript i wzorce projektowe. Programowanie dla zaawansowanych 20 JÚzyk JavaScript okazaï siÚ

Tytuł oryginału: Mastering JavaScript Design Patterns, Second Edition

Tłumaczenie: Piotr Pilch

ISBN: 978-83-283-3194-5

Copyright © Packt Publishing 2016.

First published in the English language under the title ‘Mastering JavaScript Design Patterns – Second Edition (9781785882166)’

Polish edition copyright © 2017 by Helion SAAll rights reserved.

All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from the Publisher.

Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji.

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.

Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce.

Wydawnictwo HELIONul. Kościuszki 1c, 44-100 GLIWICEtel. 32 231 22 19, 32 230 98 63e-mail: [email protected]: http://helion.pl (księgarnia internetowa, katalog książek)

Pliki z przykładami omawianymi w książce można znaleźć pod adresem: ftp://ftp.helion.pl/przyklady/jswpz2.zip

Drogi Czytelniku!Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/jswpz2Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.

Printed in Poland.

• Kup książkę• Poleć książkę • Oceń książkę

• Księgarnia internetowa• Lubię to! » Nasza społeczność

Page 3: Tytuł oryginału: Mastering JavaScript Design …pdf.helion.pl/jswpz2/jswpz2.pdfJavaScript i wzorce projektowe. Programowanie dla zaawansowanych 20 JÚzyk JavaScript okazaï siÚ

Spis tre ci

O autorze 11

O recenzencie 12

Przedmowa 13

Rozdzia 1. Projektowanie dla przyjemno ci i zysku 17

Droga do powstania j zyka JavaScript 17Pocz tki 18Przerwa 21Pojawienie si aplikacji GMail 21Wszechobecno j zyka JavaScript 23

Czym jest wzorzec projektowy? 25Antywzorce 28Podsumowanie 29

Cz I. Klasyczne wzorce projektowe 31

Rozdzia 2. Organizacja kodu 33

Porcje kodu 33O co tak w ogóle chodzi z zasi giem globalnym? 35Obiekty w j zyku JavaScript 37Tworzenie prototypu 41Dziedziczenie 44Modu y 45

Poleć książkęKup książkę

Page 4: Tytuł oryginału: Mastering JavaScript Design …pdf.helion.pl/jswpz2/jswpz2.pdfJavaScript i wzorce projektowe. Programowanie dla zaawansowanych 20 JÚzyk JavaScript okazaï siÚ

Spis tre ci

4

Klasy i modu y standardu ECMAScript 2015 49Najlepsze procedury i rozwi zywanie problemów 50Podsumowanie 50

Rozdzia 3. Wzorce kreacyjne 53

Fabryka abstrakcyjna 54Implementacja 58

Budowniczy 60Implementacja 61

Metoda wytwórcza 63Implementacja 63

Singleton 66Implementacja 67Mankamenty 68

Prototyp 68Implementacja 69

Wskazówki i zabiegi 70Podsumowanie 70

Rozdzia 4. Wzorce strukturalne 73

Adapter 73Implementacja 75

Most 77Implementacja 78

Kompozyt 81Przyk ad 82Implementacja 83

Dekorator 85Implementacja 86

Fasada 87Implementacja 87

Py ek 89Implementacja 90

Pe nomocnik 91Implementacja 92

Rady i wskazówki 93Podsumowanie 94

Rozdzia 5. Wzorce operacyjne 95

a cuch odpowiedzialno ci 96Implementacja 96

Polecenie 100Komunikat polecenia 100Element wywo uj cy (Invoker) 102Element odbieraj cy (Receiver) 103

Poleć książkęKup książkę

Page 5: Tytuł oryginału: Mastering JavaScript Design …pdf.helion.pl/jswpz2/jswpz2.pdfJavaScript i wzorce projektowe. Programowanie dla zaawansowanych 20 JÚzyk JavaScript okazaï siÚ

Spis tre ci

5

Interpreter 103Przyk ad 104Implementacja 104

Iterator 106Implementacja 106Iteratory standardu ECMAScript 2015 107

Mediator 108Implementacja 109

Memento 110Implementacja 111

Obserwator 113Implementacja 114

Stan 116Implementacja 117

Strategia 119Implementacja 121

Metoda szablonowa 123Implementacja 124

Odwiedzaj cy 125Rady i wskazówki 129Podsumowanie 130

Cz II. Inne wzorce 131

Rozdzia 6. Programowanie funkcyjne 133

Funkcje w programowaniu funkcyjnym s pozbawione efektów ubocznych 134Przekazywanie funkcji 134

Implementacja 136Filtry i potoki 138

Implementacja 139Akumulatory 141

Implementacja 142Zapami tywanie 142

Implementacja 143Niezmienno 145„Leniwe” tworzenie instancji 146

Implementacja 146Rady i wskazówki 148Podsumowanie 149

Rozdzia 7. Programowanie reaktywne 151

Zmiany stanu aplikacji 152Strumienie 152Filtrowanie strumieni 155Scalanie strumieni 157

Poleć książkęKup książkę

Page 6: Tytuł oryginału: Mastering JavaScript Design …pdf.helion.pl/jswpz2/jswpz2.pdfJavaScript i wzorce projektowe. Programowanie dla zaawansowanych 20 JÚzyk JavaScript okazaï siÚ

Spis tre ci

6

Strumienie powi zane z multipleksowaniem 159Rady i wskazówki 160Podsumowanie 160

Rozdzia 8. Wzorce aplikacji 161

Najpierw troch historii 162Model View Controller 162

Kod oparty na wzorcu MVC 167Model View Presenter 171

Kod oparty na wzorcu MVP 172Model View ViewModel 174

Kod oparty na wzorcu MVVM 176Lepszy sposób przenoszenia zmian mi dzy modelem i widokiem 177Obserwacja zmian widoku 179

Rady i wskazówki 180Podsumowanie 180

Rozdzia 9. Wzorce internetowe 181

Wysy anie kodu JavaScript 181czenie plików 182

Minifikacja 185Sieci CDN 186

Dodatki 187Biblioteka jQuery 187Biblioteka d3 189

Jednoczesne realizowanie dwóch dzia a — wielow tkowo 192Wzorzec Wy cznik 194

Wycofanie 195Ograniczanie funkcjonalno ci aplikacji 196

Wzorzec obiektów Promise 197Rady i wskazówki 199Podsumowanie 200

Rozdzia 10. Wzorce przesy ania komunikatów 201

Czym w ogóle jest komunikat? 202Polecenia 203Zdarzenia 204

danie-odpowied 206Publikowanie-subskrybowanie 209

Rozprzestrzenianie 212Kolejki utraconych wiadomo ci 215

Ponawianie komunikatu 216Potoki i filtry 217Tworzenie wersji komunikatów 218

Rady i wskazówki 219Podsumowanie 220

Poleć książkęKup książkę

Page 7: Tytuł oryginału: Mastering JavaScript Design …pdf.helion.pl/jswpz2/jswpz2.pdfJavaScript i wzorce projektowe. Programowanie dla zaawansowanych 20 JÚzyk JavaScript okazaï siÚ

Spis tre ci

7

Rozdzia 11. Mikrous ugi 221

Fasada 223Selektor us ugi 224Us ugi agreguj ce 225Potok 226Aktualizator komunikatów 227Wzorce niepowodze 229

Ograniczanie funkcjonalno ci us ugi 229Magazyn komunikatów 229Ponawianie komunikatów 230Idempotentno obs ugi komunikatów 231

Rady i wskazówki 231Podsumowanie 232

Rozdzia 12. Wzorce u ywane do testowania 233

Piramida testowania 234Testowanie po troch za pomoc testów jednostkowych 234Technika Arrange-Act-Assert 236

Asercja 237Obiekty fa szywe 237Szpiedzy testów 239Elementy zast pcze 240Atrapa obiektu 242Technika monkey patching 243Interakcja z interfejsem u ytkownika 243

Testowanie przy u yciu przegl darki 243Oszukiwanie modelu DOM 244Opakowywanie operacji modyfikowania 245

Rady i wskazówki 246Podsumowanie 247

Rozdzia 13. Wzorce zaawansowane 249

Wprowadzanie zale no ci 249Przetwarzanie ko cowe w czasie rzeczywistym 253Programowanie aspektowe 255Kody mixin 257Makra 258Rady i wskazówki 260Podsumowanie 260

Rozdzia 14. ECMAScript 2015/2016 — obecne rozwi zania 261

TypeScript 261Dekoratory 262S owa kluczowe async i await 263Typowanie 264

Poleć książkęKup książkę

Page 8: Tytuł oryginału: Mastering JavaScript Design …pdf.helion.pl/jswpz2/jswpz2.pdfJavaScript i wzorce projektowe. Programowanie dla zaawansowanych 20 JÚzyk JavaScript okazaï siÚ

Spis tre ci

8

BabelJS 265Klasy 267Parametry domy lne 269Litera y szablonu 270Powi zania bloków za pomoc s owa kluczowego let 271rodowisko produkcyjne 272

Rady i wskazówki 272Podsumowanie 272

Skorowidz 275

Poleć książkęKup książkę

Page 9: Tytuł oryginału: Mastering JavaScript Design …pdf.helion.pl/jswpz2/jswpz2.pdfJavaScript i wzorce projektowe. Programowanie dla zaawansowanych 20 JÚzyk JavaScript okazaï siÚ

1

Projektowaniedla przyjemno ci i zysku

JavaScript to stale rozwijaj cy si j zyk, który od pocz tku swojego istnienia pokona d ugdrog . By mo e w wi kszym stopniu ni jakikolwiek inny j zyk programowania rozrasta sii zmienia wraz z rozwojem technologii WWW (ang. World Wide Web). Celem ksi ki jestprzedstawienie, jak kod JavaScript mo e by pisany z wykorzystaniem dobrych praktyk projekto-wych. W przedmowie ksi ki zamieszczono szczegó owe obja nienie jej poszczególnych cz ci.

W pierwszej po owie rozdzia u przybli ymy histori j zyka JavaScript, a tak e to, jak sta siwa nym j zykiem, jakim jest obecnie. Wraz ze wzrostem znaczenia i rozwojem tego j zykazwi ksza a si równie potrzeba stosowania rygorystycznych metod jego rozbudowy. Wzorceprojektowe mog by bardzo przydatnym narz dziem, które pomaga w tworzeniu atwegow utrzymaniu kodu. Drug po ow rozdzia u po wi cimy teorii wzorców projektowych. Na ko-niec przyjrzymy si w skrócie antywzorcom.

W rozdziale omówiono nast puj ce zagadnienia: Historia j zyka JavaScript. Czym jest wzorzec projektowy? Antywzorce.

Droga do powstania j zyka JavaScriptNigdy nie dowiemy si , jakie by y pocz tki ludzkiego j zyka. Czy powoli ewoluowa z seriichrz kni i gard owych d wi ków wydawanych podczas codziennych rytua ów? By mo ej zyk powsta , aby umo liwi komunikacj matkom i ich potomstwu. Oba warianty to teoria,

Poleć książkęKup książkę

Page 10: Tytuł oryginału: Mastering JavaScript Design …pdf.helion.pl/jswpz2/jswpz2.pdfJavaScript i wzorce projektowe. Programowanie dla zaawansowanych 20 JÚzyk JavaScript okazaï siÚ

JavaScript i wzorce projektowe. Programowanie dla zaawansowanych

18

ale niemo liwa do udowodnienia. Nikt nie mia okazji obserwowa naszych przodków w tymwa nym okresie. Okazuje si , e ogólny brak dowodu empirycznego spowodowa , i towarzystwoj zykoznawcze z Pary a odrzuci o dalsze zwi zane z tym dyskusje, postrzegaj c je jako nieodpo-wiedni temat powa nych bada .

Pocz tkiNa szcz cie j zyki programowania rozwin y si w nie tak odleg ych czasach, dlatego mamymo liwo obserwowania ich ewolucji i zmian. JavaScript ma jedn z bardziej interesuj cychhistorii w ród wspó czesnych j zyków programowania. W ci gu dziesi ciu majowych dni 1995roku, które musia y by absolutnie szalone, programista z firmy Netscape stworzy podstawy tego,co rozwin o si do postaci obecnego j zyka JavaScript.

W tamtym czasie firma Netscape prowadzi a z Microsoftem pierwsz z wojen zwi zanych z prze-gl darkami. Wizja firmy Netscape by a o wiele donio lejsza ni samo rozwijanie przegl darki.Firmie zale a o na stworzeniu ca ego rozproszonego systemu operacyjnego, który korzysta byz b d cego wtedy nowo ci j zyka programowania Java firmy Sun Microsystems. Java stanowi aznacznie nowocze niejsz alternatyw wobec j zyka C++, który by propagowany przezMicrosoft. Firma Netscape nie mia a jednak odpowiedzi na j zyk Visual Basic. By on j zykiemprogramowania atwiejszym w u yciu, który kierowano do projektantów z mniejszym do wiad-czeniem. J zyk Visual Basic eliminowa pewne problemy zwi zane z zarz dzaniem pami ci ,które sprawiaj , e programowanie z wykorzystaniem j zyków C i C++ jest znacznie utrudnione.Visual Basic zapewnia równie typowanie silne i generalnie oferowa wi ksz swobod . Nanast pnej stronie przedstawiono ilustracj z osi czasu dla j zyka JavaScript .

Brendan Eich otrzyma zadanie polegaj ce na zaprojektowaniu j zyka, który by by odpowiedzifirmy Netscape na Visual Basic. Pocz tkowo projekt mia nazw kodow Mocha, ale przed poja-wieniem si przegl darki Netscape 2.0 w wersji beta jego nazwa zosta a zmieniona na LiveScript.W momencie gdy udost pniono pe n wersj j zyka Mocha/LiveScript, nadano mu nazwJavaScript, aby powi za go z integracj apletów Java. By y to niewielkie aplikacje dzia aj cew obr bie przegl darki. Aplety te mia y model zabezpiecze inny ni sama przegl darka, dlategonie by y ograniczone w tym, jak mog y prowadzi interakcj zarówno z przegl dark , jak i sys-temem lokalnym. Obecnie do rzadko mo na spotka si z apletami, gdy spora cz ich funkcjista a si cz ci przegl darki. J zyk Java by w tamtym czasie na fali, dlatego wszelkie zwi zkiz nim by y szczególnie widoczne.

Przez lata nazwa JavaScript powodowa a wiele niejasno ci. JavaScript to j zyk bardzo ró ni cysi od j zyka Java. JavaScript to j zyk interpretowany z typowaniem s abym, którego kod jesturuchamiany g ównie w przegl darce. Java to j zyk, którego kod kompilowany jest do postacikodu bajtowego wykonywanego nast pnie przez wirtualn maszyn Java. J zyk Java mo e zostazastosowany w wielu sytuacjach, od przegl darek (za po rednictwem apletów Java) po serwery(Tomcat, JBoss itp.) i w pe ni funkcjonalne aplikacje (Eclipse, OpenOffice itp.). W umys achwi kszo ci laików pozostaje m tlik.

Poleć książkęKup książkę

Page 11: Tytuł oryginału: Mastering JavaScript Design …pdf.helion.pl/jswpz2/jswpz2.pdfJavaScript i wzorce projektowe. Programowanie dla zaawansowanych 20 JÚzyk JavaScript okazaï siÚ

Rozdzia 1. • Projektowanie dla przyjemno ci i zysku

19

Poleć książkęKup książkę

Page 12: Tytuł oryginału: Mastering JavaScript Design …pdf.helion.pl/jswpz2/jswpz2.pdfJavaScript i wzorce projektowe. Programowanie dla zaawansowanych 20 JÚzyk JavaScript okazaï siÚ

JavaScript i wzorce projektowe. Programowanie dla zaawansowanych

20

J zyk JavaScript okaza si naprawd przydatny w przypadku interakcji z przegl dark inter-netow . Nie min o wiele czasu, a firma Microsoft równie zaadaptowa a ten j zyk w swojej prze-gl darce Internet Explorer, aby uzupe nia j zyk VBScript. Implementacja Microsoftu by aznana pod nazw JScript.

Pod koniec 1996 r. by o jasne, e j zyk JavaScript okaza si zwyci skim j zykiem do tworzeniastron internetowych, który b dzie dominowa w najbli szej przysz o ci. Aby ograniczy liczbró nic j zykowych mi dzy implementacjami, firmy Sun i Netscape rozpocz y wspó prac z orga-nizacj ECMA (ang. European Computer Manufacturers Association) w celu opracowania standar-du, z którym by yby zgodne przysz e wersje j zyka JavaScript. Standard zosta udost pnionybardzo szybko (zw aszcza bior c pod uwag to, jak dynamicznie dzia aj organizacje standaryzuj -ce), czyli w lipcu 1997 r. Na wypadek gdyby nie istnia a ju wystarczaj ca liczba nazw odnosz -cych si do j zyka JavaScript, standardowej wersji zosta a nadana nazwa ECMAScript, któranadal si utrzymuje w niektórych kr gach.

Niestety standard okre la jedynie bardzo podstawowe cz ci j zyka JavaScript. Bior c poduwag nasilaj ce si wojny zwi zane z przegl darkami, oczywistym sta o si , e dowolny dostaw-ca, który pozostanie tylko przy podstawowej implementacji tego j zyka, szybko znajdzie si w tyleza konkurencj . Jednocze nie czynione by y intensywne starania w celu ustanowienia dla przegl -darek standardu modelu DOM (ang. Document Object Model). Model ten by w rzeczywisto ciinterfejsem API strony internetowej, która mog a by modyfikowana za pomoc kodu JavaScript.

Przez wiele lat ka dy skrypt JavaScript zaczyna dzia anie od podj cia próby zidentyfikowaniaprzegl darki, w której zosta uruchomiony. Od tego zale ny by sposób adresowania elementóww modelu DOM, co wynika o ze znacznych ró nic mi dzy poszczególnymi przegl darkami.Legendarny jest ju wyj tkowo z o ony kod wymagany do wykonania prostych dzia a . Pami -tam, jak przez rok czyta em 20-cz ciow seri po wi con projektowaniu menu rozwijanegoopartego na kodzie DHTML (ang. Dynamic HTML), które zadzia a zarówno w przegl darceInternet Explorer, jak i w programie Netscape Navigator. Taka sama funkcjonalno mo e obecniezosta uzyskana z wykorzystaniem czystego kodu CSS, nawet bez konieczno ci si gania po kodJavaScript.

DHTML to termin, który cieszy si popularno ci pod koniec lat 90. i na pocz tku obecnego wieku. W rzeczy-wisto ci odnosi si do ka dej strony internetowej, która zawiera a dowolnego rodzaju tre dynamicznz kodem wykonywanym po stronie klienta. J zyk DHTML wyszed z u ycia, gdy popularno j zyka JavaScriptsprawi a, e obecnie niemal ka da strona zawiera elementy dynamiczne.

Na szcz cie w tle kontynuowane by y starania maj ce na celu standaryzacj j zyka JavaScript.Wersje 2 i 3 j zyka ECMAScript pojawi y si odpowiednio w 1998 r. i 1999 r. Wygl da o na to,e by mo e w ko cu dojdzie do porozumienia mi dzy ró nymi stronami zainteresowanymi

j zykiem JavaScript. Prace nad j zykiem ECMAScript 4, który mia by kolejn wersj wnosz cistotne zmiany, rozpocz y si na pocz tku 2000 r.

Poleć książkęKup książkę

Page 13: Tytuł oryginału: Mastering JavaScript Design …pdf.helion.pl/jswpz2/jswpz2.pdfJavaScript i wzorce projektowe. Programowanie dla zaawansowanych 20 JÚzyk JavaScript okazaï siÚ

Rozdzia 1. • Projektowanie dla przyjemno ci i zysku

21

PrzerwaWtedy nadesz a katastrofa. Ró ne grupy zaanga owane w rozwijanie j zyka ECMAScript zacz ymie znacz co ró ne zdania w kwestii kierunku, w którym mia pod a j zyk JavaScript. FirmaMicrosoft sprawia a wra enie utraty zainteresowania dzia aniami zwi zanymi ze standaryzacj .W pewnym sensie mog o to by zrozumia e, poniewa by to mniej wi cej okres, gdy firmaNetscape dokona a autodestrukcji, a przegl darka Internet Explorer sta a si rzeczywistymstandardem. Microsoft zaimplementowa niektóre cz ci j zyka ECMAScript 4, ale nie wszystkie.Inne firmy zapewni y bardziej kompleksow obs ug tego j zyka, ale z powodu braku udzia ulidera rynku projektanci nie byli zainteresowani korzystaniem z tego.

Mija y kolejne lata bez konsensusu i nowej wersji j zyka ECMAScript. Jak to jednak cz sto bywa,ewolucja internetu nie zatrzyma a si mimo braku porozumienia mi dzy g ównymi graczami.Biblioteki takie jak jQuery, Prototype, Dojo i Mootools wyeliminowa y g ówne ró nice obecnew przegl darkach. Dzi ki temu projektowanie dla ró nych przegl darek sta o si o wiele atwiej-sze. Jednocze nie dramatycznie zwi kszy a si ilo kodu JavaScript u ywanego w aplikacjach.

Pojawienie si aplikacji GMailBy mo e punktem zwrotnym by o udost pnienie w 2004 r. aplikacji GMail przez firm Google.Cho w chwili wydania tej aplikacji technologia XMLHTTPRequest, na której z kolei bazujetechnologia AJAX (ang. Asynchronous JavaScript and XML), by a ju dost pna od oko o pi ciu lat,nie by a odpowiednio wykorzystywana. W momencie pojawienia si aplikacji GMail by em ca -kowicie zaskoczony tym, jak p ynnie dzia a. Przyzwyczaili my si do programów, które unikajoperacji pe nego ponownego adowania, ale w tamtym czasie by a to rewolucja. Aby zapewnitakie dzia anie, niezb dna by a spora ilo kodu JavaScript.

AJAX to metoda pozwalaj ca na uzyskiwanie przez klienta niewielkich porcji danych z serwera zamiastod wie ania ca ej strony. Technologia ta umo liwia uzyskanie bardziej interaktywnych stron, które unikajznacznego obci enia wynikaj cego z ponownego adowania ca ej strony.

Popularno aplikacji GMail wywo a a zmian , na któr zanosi o si od jakiego czasu. Zwi kszaj -cy si poziom akceptacji i standaryzacji j zyka JavaScript sprawi , e wreszcie zaaprobowanoten j zyk jako w a ciwy. Do tego momentu j zyk JavaScript by u ywany g ównie do wprowa-dzania niewielkich zmian w obr bie strony oraz sprawdzania poprawno ci danych wprowadzo-nych w formularzu. artuj sobie z innymi osobami, e na pocz tku istnienia j zyka JavaScriptValidate() by a jedyn u ywan nazw funkcji.

Aplikacje takie jak GMail, które w du ym stopniu bazuj na technologii AJAX i unikaj ponowne-go pe nego adowania stron, s nazywane aplikacjami SPA (ang. Single Page Application).Dzi ki minimalizowaniu zmian zawarto ci stron u ytkownikom zapewniana jest wi ksza p ynnoobs ugi. Przesy anie wy cznie adunku danych JSON (ang. JavaScript Object Notation), a nie kodu

Poleć książkęKup książkę

Page 14: Tytuł oryginału: Mastering JavaScript Design …pdf.helion.pl/jswpz2/jswpz2.pdfJavaScript i wzorce projektowe. Programowanie dla zaawansowanych 20 JÚzyk JavaScript okazaï siÚ

JavaScript i wzorce projektowe. Programowanie dla zaawansowanych

22

HTML, powoduje równie zminimalizowanie wymaga dotycz cych przepustowo ci. Dzi kitemu aplikacje sprawiaj wra enie dzia aj cych efektywniej. W ostatnich latach dokonanoznacz cych post pów w dziedzinie rodowisk u atwiaj cych tworzenie aplikacji SPA. AngularJS,backbone.js i ember to rodowiska oparte na wzorcu MVC (ang. Model View Controller). W okre-sie ostatnich dwóch lub trzech lat zyska y one znacznie na popularno ci, a ponadto oferujkilka interesuj cych zastosowa wzorców. rodowiska te s wynikiem wieloletnich do wiadczeprowadzonych przez bardzo m dre osoby stosuj ce najlepsze procedury zwi zane z j zykiemJavaScript.

JSON to zrozumia y dla cz owieka format serializacji przeznaczony dla j zyka JavaScript. W ostatnich latach stasi bardzo popularny, poniewa jest prostszy i mniej k opotliwy ni wcze niejsze cz sto u ywane formaty,takie jak XML. Format JSON pozbawiony jest wielu technologii towarzysz cych i cis ych regu gramatycznychj zyka XML, ale wynagradza to swoj prostot .

Obecnie równolegle z rozwijaniem rodowisk korzystaj cych z j zyka JavaScript trwaj pracenad nim samym. W 2015 r. udost pniono os awion now wersj j zyka JavaScript, która by aprzygotowywana przez kilka lat. Wersja ta nosi a pocz tkowo nazw ECMAScript 6, a ostatecznieuzyska a nazw ECMAScript-2015. Pojawi o si w niej kilka znakomitych ulepsze ekosystemu.Dostawcy przegl darek spiesz si z zaadaptowaniem standardu. Z powodu z o ono ci procesudodawania nowych elementów j zyka do bazy kodu, a tak e tego, e nie ka dy jest na bie coz nowatorskimi technologiami przegl darek, na popularno ci zyskuje kilka innych j zyków doko-nuj cych transkompilacji do kodu JavaScript. CoffeeScript to j zyk przypominaj cy j zyk Python,który ma na celu zwi kszenie czytelno ci i zwi z o ci kodu JavaScript. J zyk Dart, który zostazaprojektowany przez firm Google, jest przez ni promowany jako ostateczny nast pca j zykaJavaScript. Budowa j zyka Dart zapewnia niektóre optymalizacje, które s niemo liwe w przy-padku tradycyjnego kodu JavaScript. Do momentu, w którym rodowisko uruchomieniowe j zykaDart osi gnie wystarczaj c popularno , firma Google zapewnia transkompilator przeprowadza-j cy kompilacj kodu Dart do postaci kodu JavaScript. TypeScript to projekt firmy Microsoft,w którym do j zyka JavaScript dodano wybrane elementy j zyka ECMAScript-2015, a nawetcz sk adni standardu ECMAScript-201X, jak równie interesuj cy system obs ugi typów.Celem projektu jest rozwi zanie cz ci problemów obecnych w du ych projektach opartych nakodzie JavaScript.

Mo na wskaza dwa powody omówienia historii j zyka JavaScript. Przede wszystkim trzebazapami ta , e j zyki nie s projektowane w pró ni. Zarówno j zyki, jakimi pos uguj si ludzie,jak i komputerowe j zyki programowania mutuj si w zale no ci od rodowisk, w których sstosowane. Utrzymuje si popularne przekonanie, e Innuici u ywaj sporej liczby s ów odnosz -cych si do niegu, poniewa jest on tak wszechobecny w miejscu ich zamieszkiwania. Nieko-niecznie musi to by prawd , zale nie od definicji s owa i tego, kto dok adnie tworzy spo ecznoInnuitów. Istnieje jednak spora liczba przyk adów specyficznych leksykonów, które ewoluujdo tego, by spe nia wymagania dotycz ce precyzyjnych definicji w konkretnych, w skichdziedzinach. Nie trzeba daleko szuka . Wystarczy wybra si do sklepu ze specjalistycznymsprz tem do gotowania, aby znale w nim du liczb wariantów produktów, które laik takijak ja nazwa by garnkiem.

Poleć książkęKup książkę

Page 15: Tytuł oryginału: Mastering JavaScript Design …pdf.helion.pl/jswpz2/jswpz2.pdfJavaScript i wzorce projektowe. Programowanie dla zaawansowanych 20 JÚzyk JavaScript okazaï siÚ

Rozdzia 1. • Projektowanie dla przyjemno ci i zysku

23

Hipoteza Sapira-Whorfa funkcjonuj ca w j zykoznawstwie wskazuje, e nie tylko rodowiskowp ywa na j zyk, w którym jest on u ywany, ale te j zyk ma wp yw na rodowisko. Teoria,która nazywana jest równie relatywizmem j zykowym, g osi, e procesy poznawcze ró nisi w zale no ci od tego, jak konstrukcj ma j zyk. Keith Chen, który zajmuje si psychologipoznawcz , przedstawi fascynuj cy przyk ad z tym zwi zany. W ciesz cej si bardzo du popu-larno ci prezentacji udost pnionej przez serwis TED dr Chen zasugerowa , e wyst puje silnapozytywna korelacja mi dzy u ywaniem j zyka pozbawionego czasu przysz ego a umiej tno cioszcz dzania pieni dzy (https://www.ted.com/talks/keith_chen_could_your_language_affect_your_ability_to_save_money/transcript). Zgodnie z hipotez opracowan przez dr. Chena, w sytu-acji, gdy w u ywanym j zyku nie wyst puje silne poczucie zwi zku tera niejszo ci z przysz o ci ,prowadzi to do bardziej lekkomy lnego zachowania w czasie tera niejszym.

Oznacza to, e poznanie historii j zyka JavaScript umo liwia atwiejsze zrozumienie tego, gdziei jak go wykorzysta .

Drugi powód, dla którego przybli y em histori j zyka JavaScript, jest taki, e absolutnie fascynu-j ce jest obserwowanie, jak szybko rozwija o si to popularne narz dzie. W momencie pisaniatej ksi ki min o niemal 20 lat od czasu utworzenia pierwszej wersji j zyka JavaScript, a jegopopularno od tej pory zacz a si gwa townie zwi ksza . Co mo e by bardziej ekscytuj cegoni praca z ci gle rozwijaj cym si j zykiem?

Wszechobecno j zyka JavaScriptOd czasu rewolucji wywo anej przez aplikacj GMail j zyk JavaScript rozwin si w ogrom-nym stopniu. Nowe wojny zwi zane z przegl darkami, w których do konfrontacji staj aplikacjeInternet Explorer i Edge oraz Chrome i Firefox, doprowadzi y do powstania wielu bardzo szyb-kich interpreterów j zyka JavaScript. Opracowane zosta y zupe nie nowe techniki optymalizacji.Ca kiem cz sto mo na si spotka z kompilowaniem kodu JavaScript do postaci kodu maszyno-wego w celu zapewnienia mu wi kszej wydajno ci. Poniewa jednak wzros a szybko koduJavaScript, zwi kszy a si te z o ono aplikacji tworzonych z jego wykorzystaniem.

JavaScript nie jest ju równie wy cznie j zykiem s u cym do wprowadzania zmian w przegl -darce. Wyodr bniono silnik tego j zyka, na którym bazuje popularna przegl darka Chrome,i obecnie jest on „sercem” kilku interesuj cych projektów, takich jak rodowisko Node.js.Na pocz tku zapewnia o ono cechuj cy si wysokim stopniem asynchroniczno ci sposób tworze-nia aplikacji serwerowych. Z czasem znacznie si rozwin o i obecnie wspierane jest przez bardzoaktywn spo eczno . Z wykorzystaniem rodowiska Node.js zaprojektowano bardzo ró norodneaplikacje, od narz dzi do budowania po edytory. W ostatnim czasie udost pniono publicznie rów-nie kod ród owy silnika j zyka JavaScript dla przegl darki Microsoft Edge o nazwie ChakraCore,który mo e zosta osadzony w rodowisku Node.js jako alternatywa wobec silnika V8 firmyGoogle. SpiderMonkey, czyli odpowiednik silnika z przegl darki Firefox, tak e oferuje publicz-nie kod ród owy, dzi ki czemu zyskuje na popularno ci w przypadku wi kszej liczby narz dzi.

Poleć książkęKup książkę

Page 16: Tytuł oryginału: Mastering JavaScript Design …pdf.helion.pl/jswpz2/jswpz2.pdfJavaScript i wzorce projektowe. Programowanie dla zaawansowanych 20 JÚzyk JavaScript okazaï siÚ

JavaScript i wzorce projektowe. Programowanie dla zaawansowanych

24

J zyk JavaScript mo e nawet zosta zastosowany do sterowania mikrokontrolerami. Johnny-Fiveto rodowisko programistyczne przeznaczone do bardzo popularnej platformy Arduino. rodowi-sko to zapewnia o wiele prostszy sposób programowania urz dze ni tradycyjne j zyki niskopo-ziomowe u ywane do pisania oprogramowania dla tych urz dze . Wykorzystanie j zyka Java-Script i platformy Arduino oferuje dost p do wielu mo liwo ci, od tworzenia robotów poczujniki stosowane na co dzie .

Wszystkie podstawowe platformy smartfonów (iOS, Android i Windows Phone) oferuj opcjbudowania aplikacji za pomoc j zyka JavaScript. W przypadku tabletów wygl da to bardzopodobnie. Obs uguj one programowanie z wykorzystaniem j zyka JavaScript. Nawet najnowszawersja systemu Windows zapewnia mechanizm do tworzenia aplikacji przy u yciu tego j zyka.Poni sza ilustracja prezentuje niektóre zastosowania mo liwe w przypadku j zyka JavaScript.

JavaScript staje si jednym z najwa niejszych j zyków wiata. Cho wiadomo, e bardzo trudnejest uzyskanie statystyk wykorzystania j zyków, w ka dym niezale nym ródle, w którym podj toprób opracowania rankingu, JavaScript plasuje si w pierwszej dziesi tce.

Zestawienie j zykowe Pozycja j zyka JavaScript

Langpop.com 4

Statisticbrain.com 4

Codeval.com 6

TIOBE 8

Poleć książkęKup książkę

Page 17: Tytuł oryginału: Mastering JavaScript Design …pdf.helion.pl/jswpz2/jswpz2.pdfJavaScript i wzorce projektowe. Programowanie dla zaawansowanych 20 JÚzyk JavaScript okazaï siÚ

Rozdzia 1. • Projektowanie dla przyjemno ci i zysku

25

Jeszcze bardziej interesuj ce jest to, e w wi kszo ci tych rankingów zasugerowano, i zwi kszasi poziom wykorzystania j zyka JavaScript.

Krótko mówi c, wynika z tego, e w ci gu kilku nast pnych lat j zyk JavaScript b dzie nale edo cis ej czo ówki. Coraz wi cej aplikacji pisanych jest w tym j zyku, a ponadto pe ni on funkcjj zyka roboczego w przypadku dowolnego rodzaju procesu projektowania aplikacji internetowych.Jeff Atwood, twórca popularnej witryny internetowej Overflow, sformu owa tak zwane prawoAtwooda dotycz ce szerokiej skali adaptacji j zyka JavaScript:

„Dowolna aplikacja, która mo e zosta napisana w j zyku JavaScript, ostateczniezostanie za jego pomoc utworzona” — prawo Atwooda, Jeff Atwood

Powy sza obserwacja zosta a wielokrotnie potwierdzona jako prawdziwa. Obecnie wiele kompi-latorów, arkuszy kalkulacyjnych i edytorów tekstu, które znasz, zosta o napisanych z wykorzysta-niem j zyka JavaScript.

Wraz ze zwi kszaniem si z o ono ci aplikacji opartych na kodzie JavaScript programista mo enapotka wiele tych samych problemów, które pojawia y si w tradycyjnych j zykach programo-wania. Jak mo na utworzy tak aplikacj , która b dzie przystosowana do zmian?

W ten oto sposób pojawia si potrzeba w a ciwego projektowania aplikacji. Nie mo na ju po pro-stu umie ci porcji kodu JavaScript w pliku i mie nadziei, e zadzia a poprawnie. Nie mo nate szuka ratunku w bibliotekach, takich jak jQuery. Biblioteki mog jedynie zapewni dodatko-w funkcjonalno , a ponadto nie wp yn na struktur aplikacji. Przynajmniej troch uwagitrzeba obecnie po wi ci sposobowi budowania aplikacji, tak aby mog y by rozszerzane i adap-towane. Otaczaj cy nas wiat nieustannie si zmienia. Ka da aplikacja, która nie ma mo liwo-ci dostosowania do zmieniaj cego si wiata, prawdopodobnie zostanie zapomniana. Wzorce

projektowe zapewniaj pewne wytyczne podczas tworzenia elastycznych aplikacji, które mogsi zmienia wraz ze zmieniaj cymi si wymaganiami biznesowymi.

Czym jest wzorzec projektowy?Pomys y mog przewa nie zosta wykorzystane tylko w jednym miejscu. U ycie mas a orzecho-wego jest znakomitym pomys em podczas gotowania, lecz nie w przypadku szycia. Sporadyczniemo liwe jest jednak okre lenie mo liwo ci zastosowania wspania ego pomys u w miejscu innymni pierwotnie ustalone. W a nie z tym zwi zane s wzorce projektowe.

Christopher Alexander, Sara Ishikawa i Murray Silverstein napisali w 1977 r. nowatorsk ksi kA Pattern Language: Towns, Buildings, Construction po wi con temu, co zosta o przez nichnazwane wzorcami projektowymi w planowaniu urbanistycznym.

W ksi ce opisano j zyk s u cy do omawiania podobie stw projektu. Wzorzec zosta w niejprzedstawiony w nast puj cy sposób:

Poleć książkęKup książkę

Page 18: Tytuł oryginału: Mastering JavaScript Design …pdf.helion.pl/jswpz2/jswpz2.pdfJavaScript i wzorce projektowe. Programowanie dla zaawansowanych 20 JÚzyk JavaScript okazaï siÚ

JavaScript i wzorce projektowe. Programowanie dla zaawansowanych

26

„Elementy tego j zyka s jednostkami nazywanymi wzorcami. Ka dy wzorzecopisuje problem wyst puj cy nieustannie w naszym rodowisku, a nast pniecharakteryzuje rdze rozwi zania tego problemu w taki sposób, e mo e ono zostawykorzystane ponad milion razy bez konieczno ci realizowania tego dwa razy w tensam sposób” — Christopher Alexander

Te wzorce projektowe mia y na przyk ad za zadanie okre lenie sposobu planowania miast w celuzapewnienia po czenia miejskich i wiejskich elementów ycia lub sposobu budowania drógw p tlach pozwalaj cych na uspokojenie ruchu w dzielnicach mieszkalnych. Zosta o to zaprezen-towane na poni szym rysunku pochodz cym z ksi ki.

Nawet osoby niezainteresowane zbytnio planowaniem urbanistycznym znajd w tej ksi cekilka fascynuj cych pomys ów dotycz cych tego, jak zorganizowa otaczaj cy nas wiat w celupromowania idei zdrowego spo ecze stwa.

Wykorzystuj c prac Christophera Alexandera oraz innych autorów jako ród o inspiracji, ErichGamma, Richard Helm, Ralph Johnson i John Vlissides napisali ksi k zatytu owan DesignPatterns: Elements of Reusable Object-Oriented Software. Gdy ksi ka wywiera bardzo du ywp yw na program nauczania informatyki, cz sto nadawana jest jej pieszczotliwa nazwa. Na przy-k ad wi kszo absolwentów informatyki w krajach angloj zycznych b dzie wiedzie , o jakiejksi ce mowa, gdy poda si nazw The Dragon Book (Principles of Compiler Design, 1986 r.).W bran y oprogramowania dla przedsi biorstw nazwa The Blue Book jest powszechnie kojarzonaz ksi k Erica Evana po wi con projektowaniu DDD (Domain-Driven Design). Ksi ka o wzor-cach projektowych okaza a si tak wa na, e powszechnie okre la si j mianem ksi ki GoF lubGang of Four, poniewa mia a czterech autorów.

Poleć książkęKup książkę

Page 19: Tytuł oryginału: Mastering JavaScript Design …pdf.helion.pl/jswpz2/jswpz2.pdfJavaScript i wzorce projektowe. Programowanie dla zaawansowanych 20 JÚzyk JavaScript okazaï siÚ

Rozdzia 1. • Projektowanie dla przyjemno ci i zysku

27

W ksi ce tej opisano 23 wzorce stosowane w projektowaniu obiektowym. Wzorce zosta y po-dzielone na nast puj ce trzy podstawowe grupy:

Wzorce kreacyjne. Wzorce te opisuj kilka sposobów tworzenia obiektów i zarz dzaniaich cyklami ycia.

Wzorce operacyjne. Wzorce te opisuj sposób wzajemnej interakcji obiektów. Wzorce strukturalne. Wzorce te opisuj gam ró nych sposobów dodawania

funkcjonalno ci do istniej cych obiektów.

Celem wzorców projektowych nie jest instruowanie co do sposobu tworzenia oprogramowania,lecz raczej zapewnianie wytycznych dotycz cych mo liwych metod rozwi zywania typowychproblemów. Na przyk ad wiele aplikacji musi oferowa pewnego rodzaju funkcj cofania zmian.Problem ten jest typowy dla edytorów tekstu, programów do rysowania, a nawet klientów pocztyelektronicznej. By rozwi zywany wielokrotnie, zanim uznano, e wspania ym pomys em by obyzapewnienie wspólnego rozwi zania. Wzorzec polecenia oferuje w a nie takie rozwi zanie. Suge-ruje on ledzenie wszystkich dzia a wykonywanych w aplikacji jako instancji polecenia. Polecenieto b dzie dysponowa dzia aniem przej cia do przodu i do ty u. Ka dorazowo przetwarzane pole-cenie umieszczane jest w kolejce. Gdy pojawi si potrzeba cofni cia polecenia, sprowadza si to dousuni cia z kolejki polece najwy ej znajduj cej si pozycji i wykonania dla niej operacji cofania.

Wzorce projektowe zapewniaj pewne wskazówki dotycz ce sposobu rozwi zania typowychproblemów, takich jak problem cofania zmian. Wzorce zosta y uzyskane po wykonaniu setekiteracji rozwi zuj cych ten sam problem. Wzorzec mo e nie by ci le poprawnym rozwi zaniemdanego problemu, ale powinien przynajmniej zaoferowa pewne wytyczne pozwalaj ce na a-twiejsz implementacj rozwi zania.

Znajomy konsultant opowiedzia mi kiedy histori o pocz tku realizacji zlecenia w nowej firmie. Kierownikpowiedzia jemu i innym osobom, e nie s dzi , i b dzie wymagane tak wiele pracy z zespo em, poniewana samym pocz tku zaopatrzy projektantów w ksi k GoF o wzorcach projektowych, a oni zaimplemento-wali ka dy wzorzec bez wyj tku. Dowiedziawszy si o tym, mój znajomy by szcz liwy, poniewa by op aca-ny za liczb przepracowanych godzin. Niew a ciwe zastosowanie wzorców projektowych przez klientapozwoli o mu op aci znaczn cz studiów swojego dziecka.

Od czasów ksi ki GoF pojawia o si coraz wi cej literatury wyszczególniaj cej i opisuj cejwzorce projektowe. Dost pne s ksi ki po wi cone wzorcom projektowym, powi zanym z kon-kretnymi dziedzinami, a tak e ksi ki traktuj ce o wzorcach przeznaczonych dla du ych systemówklasy korporacyjnej. Kategoria serwisu Wikipedia stworzona dla wzorców projektowych oprogra-mowania zawiera 130 wpisów dla ró nych wzorców projektowych. Przychyla bym si jednak dotego, e wiele z tych wpisów nie dotyczy prawdziwych wzorców projektowych, lecz raczej para-dygmatów programowania.

Wzorce projektowe to przewa nie proste konstrukcje, które nie wymagaj z o onej obs ugibibliotek. Cho w przypadku wi kszo ci j zyków istniej biblioteki wzorców, nie ma potrzebywydawania mnóstwa pieni dzy na ich zakup. Implementuj wzorce, gdy uznasz to za konieczne.

Poleć książkęKup książkę

Page 20: Tytuł oryginału: Mastering JavaScript Design …pdf.helion.pl/jswpz2/jswpz2.pdfJavaScript i wzorce projektowe. Programowanie dla zaawansowanych 20 JÚzyk JavaScript okazaï siÚ

JavaScript i wzorce projektowe. Programowanie dla zaawansowanych

28

Dysponowanie kosztown bibliotek , która nadwer y a bud et, mo e zach ca do stosowaniawzorców na lepo tylko po to, aby uzasadni wydanie pieni dzy. Je li nawet rozwa asz zakupbiblioteki, nie jest mi znana adna biblioteka dla j zyka JavaScript, której jedynym celem jestzapewnianie obs ugi wzorców. Oczywi cie serwis GitHub jest pe en interesuj cych projektówpowi zanych z j zykiem JavaScript, dlatego równie dobrze mo e istnie tam biblioteka, o którejnie wiem.

S osoby, które sugeruj , e wzorce projektowe powinny by wynikiem dzia a . Oznacza to,e ju samo utworzenie oprogramowania w inteligentny sposób umo liwia dostrze enie wzorców

wynikaj cych z implementacji. Uwa am, e mo e to by trafne stwierdzenie, w którym zignoro-wano jednak rzeczywisty koszt uzyskania tych implementacji metod prób i b dów. Osobyznaj ce wzorce projektowe ze znacznie wi kszym prawdopodobie stwem na samym pocz tkudostrzeg wzorzec wynikaj cy z implementacji. Uczenie pocz tkuj cych programistów o wzor-cach to bardzo przydatne wiczenie. Posiadanie od pocz tku informacji o tym, jaki wzorzec lubwzorce mog zosta zastosowane, umo liwia pój cie na skróty. Pe ne rozwi zanie mo e zostauzyskane wcze niej i po wykonaniu mniejszej liczby niew a ciwych czynno ci.

AntywzorceJe li w dobrym projekcie oprogramowania mo na znale typowe wzorce, to czy istniej te wzor-ce, które mog zosta znalezione w z ym projekcie oprogramowania? Oczywi cie! Mo na wymie-ni dowoln liczb sposobów niew a ciwego realizowania dzia a , ale wi kszo z nich zosta aju wcze niej wykonana. Potrzeba prawdziwej kreatywno ci, eby co popsu w nieznany dot dsposób.

Mankamentem jest tutaj to, e bardzo trudno zapami ta wszystkie sposoby niew a ciwego reali-zowania dzia a , które mia y miejsce w ci gu wielu lat. Na zako czenie wielu du ych projektówcz onkowie zespo u zbieraj si i przygotowuj dokument z wyci gni tymi wnioskami. Dokumentzawiera list rzeczy, które mog y zosta lepiej zrealizowane w projekcie. W dokumencie mogby nawet przedstawione pewne sugestie dotycz ce tego, jak w przysz o ci mo na unikn napo-tkanych problemów. Niefortunne jest to, e taki dokument jest sporz dzany tylko na ko cuprojektu. Od tego momentu wielu kluczowych uczestników projektu b dzie ju niedost pnych,a pozosta e osoby musz stara si zapami ta wnioski wyci gni te z wcze niejszych etapówprojektu, które mog y by realizowane wiele lat temu. Znacznie lepszym rozwi zaniem jest two-rzenie dokumentu w trakcie realizacji projektu.

Po uko czeniu dokument jest przechowywany, aby by gotowy do wykorzystania przy nast pnymprojekcie. Taka jest przynajmniej teoria. W wi kszo ci sytuacji dokument jest przechowywanyi nigdy nie zostaje ponownie u yty. Trudno sformu owa wnioski, które maj uniwersalnycharakter. Wyci gni te wnioski s zwykle przydatne tylko w przypadku bie cego projektulub dok adnie takiego samego projektu, co prawie nigdy nie ma miejsca.

Poleć książkęKup książkę

Page 21: Tytuł oryginału: Mastering JavaScript Design …pdf.helion.pl/jswpz2/jswpz2.pdfJavaScript i wzorce projektowe. Programowanie dla zaawansowanych 20 JÚzyk JavaScript okazaï siÚ

Rozdzia 1. • Projektowanie dla przyjemno ci i zysku

29

Po przejrzeniu kilku takich dokumentów z ró nych projektów wzorce zaczynaj by jednakwidoczne. Przyjmowano przy tym takie podej cie, e w efekcie William Brown, Raphael Malveau,Skip McCormick i Tom Mowbray, których razem okre lono mianem Upstart Gang of Fourw nawi zaniu do wcze niej powsta ej nazwy Gang of Four, napisali pierwsz ksi k po wi conantywzorcom. W ksi ce zatytu owanej AntiPatterns: Refactoring Software, Architectures, andProjects in Crisis opisano antywzorce nie tylko w odniesieniu do problemów obecnych w kodzie,ale te powi zanego z nim procesu zarz dzania.

Zaprezentowane wzorce to mi dzy innymi humorystycznie nazwane wzorce The Blob (klucha)i Lava Flow (potok lawy). The Blob, znany równie jako „obiekt Boga”, to wzorzec, w przypadkuktórego jeden obiekt rozrasta si w celu przej cia odpowiedzialno ci za ogromne ilo ci elementówlogicznych aplikacji. Lava Flow to wzorzec pojawiaj cy si wraz z dojrzewaniem projektu,gdy nikt nie wie, czy dany kod jest nadal u ywany. Projektanci z obaw podchodz do usuwaniakodu, poniewa mo e by gdzie wykorzystywany lub mo e ponownie okaza si przydatny.W ksi ce opisano wiele innych wzorców, które s warte poznania. Tak jak w przypadku wzorców,antywzorce s wynikiem pisania kodu, lecz w tym przypadku jest to kod, nad którym utraconokontrol .

W ksi ce nie b d prezentowane antywzorce j zyka JavaScript, ale warto pami ta , e jednymz antywzorców jest nadmierne stosowanie wzorców projektowych.

PodsumowanieWzorce projektowe maj bogat i interesuj c histori . Na pocz tku pe ni y one funkcj narz dziu atwiaj cych opisywanie sposobu budowania struktur, które umo liwiaj ludziom wspó prac .Wzorce rozwin y si do poziomu pozwalaj cego na zastosowanie ich w wielu dziedzinach.

Min a ju dekada, odk d pojawi a si nowatorska praca po wi cona zastosowaniu wzorcówprojektowych podczas programowania. Od tego czasu opracowano ogromn liczb nowychwzorców. Niektóre z nich to wzorce ogólnego przeznaczenia, takie jak te opisane w ksi ce GoF,jednak wiele z nich stanowi bardzo specyficzne wzorce, które zaprojektowano pod k temu ycia w w skiej dziedzinie.

J zyk JavaScript równie ma interesuj c histori i naprawd dojrzewa. Je li we miemy poduwag rozwój oprogramowania serwerowego opartego na kodzie JavaScript i rozpowszechnieniedu ych aplikacji JavaScript, pojawia si potrzeba wi kszej staranno ci przy tworzeniu takichaplikacji. Do rzadko ci nale y w a ciwe wykorzystanie wzorców w wi kszo ci nowoczesnychkodów JavaScript.

Bazowanie na wiedzy zapewnianej przez wzorce projektowe przy tworzeniu nowoczesnychwzorców j zyka JavaScript pozwala uzyska to, co najlepsze w obu tych „ wiatach”. Isaac Newtonjest autorem nast puj cego s ynnego stwierdzenia:

„Je li widz dalej, to tylko dlatego, e stoj na ramionach olbrzymów”.

Poleć książkęKup książkę

Page 22: Tytuł oryginału: Mastering JavaScript Design …pdf.helion.pl/jswpz2/jswpz2.pdfJavaScript i wzorce projektowe. Programowanie dla zaawansowanych 20 JÚzyk JavaScript okazaï siÚ

JavaScript i wzorce projektowe. Programowanie dla zaawansowanych

30

Wzorce oferuj nam atwo dost pne „ramiona”, na których mo emy stan .

W nast pnym rozdziale przyjrzymy si kilku technikom budowania struktury w kodzie JavaScript.System dziedziczenia w j zyku JavaScript ró ni si od obecnego w wi kszo ci innych j zykówobiektowych, co stwarza nam zarówno mo liwo ci, jak i ograniczenia. Dowiemy si , jak tworzyklasy i modu y w wiecie j zyka JavaScript.

Poleć książkęKup książkę

Page 23: Tytuł oryginału: Mastering JavaScript Design …pdf.helion.pl/jswpz2/jswpz2.pdfJavaScript i wzorce projektowe. Programowanie dla zaawansowanych 20 JÚzyk JavaScript okazaï siÚ

Skorowidz

AAAA, Arrange-Act-Assert, 236Adapter, 73AJAX, Asynchronous JavaScript and XML, 21Aktualizator komunikatów, 227akumulatory, 141antywzorce, 28AOP, aspect-oriented programming, 255, 262aplikacja

GMail, 21SPA, 22

architektura SOA, 218asercja, 237AST, Abstract Syntax Tree, 259atrapa obiektu, 242

BBabelJS, 265biblioteka

d3, 189jQuery, 187LINQ, 140

Budowniczy, 60

CCDN, Content Delivery Network, 186CQRS, Command Query Responsibility

Segregation, 220

Dd3, 189DDD, Domain-Driven Design, 203debouncing, 154Dekorator, 85, 262DHTML, Dynamic HTML, 20dodatki, 187DOM, Document Object Model, 243drzewo sk adniowe AST, 259dziedziczenie, 44

EECMAScript, 20ECMAScript 2015, 49ECMAScript 2015/2016, 261element

odbieraj cy, 103wywo uj cy, 102

elementy zast pcze, 240

FFabryka abstrakcyjna, 54Fasada, 87, 223filtrowanie strumieni, 155filtry, 138, 217funkcje, 134

Poleć książkęKup książkę

Page 24: Tytuł oryginału: Mastering JavaScript Design …pdf.helion.pl/jswpz2/jswpz2.pdfJavaScript i wzorce projektowe. Programowanie dla zaawansowanych 20 JÚzyk JavaScript okazaï siÚ

Skorowidz

276

GGMail, 21

Iidempotentno obs ugi komunikatów, 231interakcja z interfejsem u ytkownika, 243Interpreter, 103Iterator, 106

standardu ECMAScript 2015, 107

JJavaScript, 17, 23j zyk

JavaScript, 17TypeScript, 261UML, 54

jQuery, 187JSON, JavaScript Object Notation, 21

Kkacze typowanie, 56klasy, 49, 267klasyczne wzorce projektowe, 31kody mixin, 257kompilator BabelJS, 265Kompozyt, 81komunikaty, 201

idempotentno obs ugi, 231magazyn, 229ponawianie, 216, 230wersje, 218

konsola programisty, 36kontroler, 165koperta, 202

Lleniwe tworzenie instancji, 146LINQ, Language Integrated Queries, 140litera y szablonu, 270

a cuch odpowiedzialno ci, 96czenie plików, 182

Mmagazyn komunikatów, 229magistrala, 206makra, 258maszyny stanowe, 116Mediator, 108Memento, 110metody

szablonowe, 123wytwórcze, 63

mikrous ugi, 221minifikacja, 185model, 164

DOM, 243modularno oprogramowania, 255modu y, 45, 49modyfikowanie, 245Most, 77multipleksowanie, 159MVC, Model View Controller, 22, 162MVP, Model View Presenter, 171MVVM, Model View ViewModel, 113, 174

Nniezmienno , 145

Oobiekt, 37obiekty fa szywe, 237obserwacja zmian widoku, 179Obserwator, 113Odwiedzaj cy, 125ograniczanie funkcjonalno ci, 196

us ugi, 229opakowywanie operacji modyfikowania, 245organizacja kodu, 33oszukiwanie modelu DOM, 244

PPAC, Presentation-Abstraction-Control, 166parametry domy lne, 269Pe nomocnik, 91piramida testowania, 234

Poleć książkęKup książkę

Page 25: Tytuł oryginału: Mastering JavaScript Design …pdf.helion.pl/jswpz2/jswpz2.pdfJavaScript i wzorce projektowe. Programowanie dla zaawansowanych 20 JÚzyk JavaScript okazaï siÚ

Skorowidz

277

polecenia, 100, 203element odbieraj cy, 103element wywo uj cy, 102komunikat polecenia, 100

ponawianie komunikatów, 216, 230porcje kodu, 33potoki, 138, 217, 226prezentacja, 166programowanie

aspektowe AOP, 255, 262funkcyjne, 133reaktywne, 151zwinne, 234

Prototyp, 41, 68przegl darka, 243przekazywanie funkcji, 134przenoszenie zmian, 177przesy anie komunikatów, 201przetwarzanie ko cowe, 253Publikowanie-subskrybowanie, 209

rozprzestrzenianie, 212Py ek, 89

RRabbitMQ, 223refaktoryzacja kodu, 50

Sscalanie strumieni, 157Selektor us ugi, 224sieci CDN, 186Singleton, 66s owo kluczowe

async, 263await, 263let, 271

SOA, service-oriented architecture, 218SPA, Single Page Application, 21Stan, 116

aplikacji, 152standard ECMAScript 2015, 49Strategia, 119strumienie, 152

filtrowanie, 155multipleksowanie, 159scalanie, 157

systemy przekazywania komunikatów, 223szpiedzy testów, 239

rodowiskoNode.js, 23produkcyjne, 272

Ttechnika

AAA, 236DDD, 203monkey patching, 243

testowanie, 233, 234integracyjne, 238przy u yciu przegl darki, 243

testy jednostkowe, 234tkanie, 255tworzenie

instancji, 146prototypu, 41wersji komunikatów, 218

TypeScript, 261typowanie, 264typy podstawowe, 37

UUML, Unified Modeling Language, 54Us ugi agreguj ce, 225

Wwersje komunikatów, 218widok, 164wielow tkowo , 192wprowadzanie zale no ci, 249Wy cznik, 194

ograniczanie funkcjonalno ci, 196wycofanie, 195

wysy anie kodu JavaScript, 181wzorce

aplikacji, 161internetowe, 181kreacyjne, 27, 53niepowodze , 229

Poleć książkęKup książkę

Page 26: Tytuł oryginału: Mastering JavaScript Design …pdf.helion.pl/jswpz2/jswpz2.pdfJavaScript i wzorce projektowe. Programowanie dla zaawansowanych 20 JÚzyk JavaScript okazaï siÚ

Skorowidz

278

wzorceoperacyjne, 27, 95projektowe, 25przesy ania komunikatów, 201strukturalne, 27, 73u ywane do testowania, 233zaawansowane, 249

wzorzecAdapter, 73Aktualizator komunikatów, 227Budowniczy, 60Dekorator, 85Fabryka abstrakcyjna, 54Fasada, 87, 223Interpreter, 103Iterator, 106Kompozyt, 81Lava Flow, 29

a cuch odpowiedzialno ci, 96Mediator, 108Memento, 110Metoda szablonowa, 123Metoda wytwórcza, 63Most, 77MVC, 22, 162MVP, 171MVVM, 174NO, 164obiektów Promise, 197Obserwator, 113Odwiedzaj cy, 125

PAC, 166Pe nomocnik, 91Polecenie, 100Potok, 226Prototyp, 68Publikowanie-subskrybowanie, 209Py ek, 89Selektor us ugi, 224Singleton, 66Stan, 116Strategia, 119The Blob, 29Us ugi agreguj ce, 225Wy cznik, 194

danie-odpowied , 206

Zzale no ci, 249zapami tywanie, 142zasi g globalny, 35zdarzenie, 204ZeroMQ, 223zmiany stanu aplikacji, 152

danie-odpowied , 206

Poleć książkęKup książkę

Page 28: Tytuł oryginału: Mastering JavaScript Design …pdf.helion.pl/jswpz2/jswpz2.pdfJavaScript i wzorce projektowe. Programowanie dla zaawansowanych 20 JÚzyk JavaScript okazaï siÚ