Spis treści:

Darmowy kurs: „Szybki start w Pythonie”
Dowiedz się więcejMoje pierwsze spotkanie z tworzeniem stron internetowych okazało się dość trudne. Wcześniej zajmowałem się wyłącznie tworzeniem backendu w Javie, a przejście na JavaScript było dla mnie prawdziwym wyzwaniem. Irytowały mnie wielopoziomowe wywołania zwrotne, słabe typowanie i mylące fragmenty kodu. Co więcej, praca z jQuery wcale nie ułatwiała tego procesu.
Angular w połączeniu z TypeScript przyciąga wielu programistów, zwłaszcza tych z doświadczeniem w programowaniu back-endowym. Wynika to z obecności silnych typów, które pomagają uniknąć wielu błędów na etapie kompilacji. Ponadto Angular implementuje znany wzorzec MVC, który sprawia, że architektura aplikacji jest bardziej zrozumiała i ustrukturyzowana. Korzystanie z TypeScript rozszerza możliwości Angulara, poprawiając czytelność i łatwość utrzymania kodu. Takie podejście sprzyja wydajniejszemu programowaniu i upraszcza pracę zespołową, co jest szczególnie ważne w przypadku złożonych projektów.
Czasy trudności
Dziesięć lat temu, co stanowiło znaczący okres w branży programistycznej, istniała znaczna przepaść między aplikacjami desktopowymi a webowymi. Aplikacje desktopowe miały wiele funkcji, ale wyróżniały się ciężką i nieporęczną architekturą. Aplikacje webowe z kolei były dostępne za pośrednictwem przeglądarki, ale ich funkcjonalność była ograniczona. Od tego czasu technologia znacząco się rozwinęła, a granice między tymi dwoma typami aplikacji stopniowo się zacierają. Nowoczesne aplikacje webowe stały się bardziej wydajne i funkcjonalne, co pozwala im konkurować z tradycyjnymi rozwiązaniami desktopowymi i zapewniać użytkownikom wygodniejsze i bardziej przystępne środowisko. Istnieje znacząca różnica między twórcami tych aplikacji. Niektórzy używali zaawansowanych i złożonych języków programowania, takich jak Java i C, i nie chcieli słyszeć o JavaScript. Na przeciwnym biegunie znajdowali się programiści preferujący lżejsze i bardziej elastyczne technologie: HTML, CSS, JavaScript, PHP i Ruby. Te różnice w podejściu do tworzenia aplikacji determinują nie tylko preferencje technologiczne, ale także metody rozwiązywania problemów, co z kolei wpływa na końcowy wynik i doświadczenie użytkownika.

Najpierw Google poczyniło znaczący krok w kierunku integracji aplikacji internetowych i desktopowych. Jego biblioteki i kompilator Closure Tools umożliwiły programistom tworzenie aplikacji internetowych o funkcjonalności porównywalnej z rozwiązaniami desktopowymi, takimi jak Gmail. Jednak technologie te nadal opierały się na Javie, pozostawiając programistów z ich własnym zestawem technologicznym na uboczu.
Pomimo wszystkich trudności, grupa odważnych programistów stworzyła imponujące aplikacje internetowe, wykorzystując jQuery, kreatywność i odrobinę nadziei. Ich praca zachwycała użytkowników, ale utrzymanie takich aplikacji stało się prawdziwym wyzwaniem: baza kodu była ogromna, a struktura – zawiła i złożona. Stwarzało to liczne problemy i znacznie utrudniało dalszy rozwój.
Z jednej strony rozbudowane biblioteki Google ograniczały możliwości programistów internetowych w zakresie korzystania z HTML i CSS. Z drugiej strony, najbardziej odważni programiści tworzyli złożone aplikacje, opierając się wyłącznie na czystym JavaScript lub jQuery. Ta sytuacja uwypukla sprzeczność we współczesnym tworzeniu stron internetowych, gdzie wybór narzędzi bezpośrednio wpływa na produktywność i łatwość tworzenia. Ważne jest znalezienie równowagi między korzystaniem z bibliotek a samodzielną pracą z językami znaczników i stylów, aby tworzyć efektywne i responsywne aplikacje internetowe.
Promienie nadziei
W tym czasie zaczęły pojawiać się frameworki, które upraszczały proces tworzenia aplikacji internetowych, podobnie jak Gmail. Narzędzia te umożliwiały programistom tworzenie złożonych aplikacji bez konieczności dogłębnej znajomości niskopoziomowych technologii internetowych. Frameworki dostarczały gotowe rozwiązania i biblioteki, co znacznie przyspieszało rozwój i czyniło go bardziej dostępnym dla szerszego grona specjalistów.
Framework SproutCore stał się pionierem w dziedzinie tworzenia aplikacji internetowych bez użycia HTML i CSS. Oferował widżety, które umożliwiały tworzenie aplikacji, upraszczając proces tworzenia i ulepszając interfejs użytkownika. SproutCore stał się fundamentem dalszych innowacji w budowaniu dynamicznych aplikacji internetowych.
Następnie na scenie pojawiły się GWT, Capuccino i podobne frameworki. Unikały one używania czystego JavaScript, konwertując kod napisany w innych językach do JavaScript. Na przykład GWT korzystał z Javy, a Capuccino z Objective-J. Frameworki te były wygodne dla programistów aplikacji desktopowych, umożliwiając im tworzenie aplikacji internetowych przy użyciu znanych metod. Nie spełniały jednak wymagań programistów, którzy potrzebowali elastyczności i kontroli nad swoim kodem.
Pojawienie się Backbone, Knockout i Ember zapoczątkowało nową erę w tworzeniu stron internetowych. Frameworki te oferowały programistom narzędzia do tworzenia aplikacji przy użyciu znanych metod. Jednak żaden z nich nie zyskał powszechnej popularności w społeczności programistów.
W 2010 roku świat programowania poznał swojego bohatera – Angulara. Ten framework stał się prawdziwą rewolucją w tworzeniu aplikacji internetowych, oferując programistom potężne narzędzia do tworzenia dynamicznych i responsywnych interfejsów. Angular zmienił sposób, w jaki programiści podchodzą do tworzenia, zapewniając bardziej efektywne zarządzanie danymi i upraszczając proces tworzenia interfejsów użytkownika. Od tego czasu Angular pozostaje jednym z najpopularniejszych rozwiązań wśród programistów, przyczyniając się do tworzenia nowoczesnych aplikacji internetowych.
Angular. Początki
Historia rozpoczęła się rok temu, gdy programista Google, Miško Hevery, i jego kolega Adam Abrons pracowali nad osobistym projektem. Poświęcili temu projektowi swój wolny czas.
Celem tej inicjatywy było uproszczenie pracy programistów i projektantów stron internetowych, umożliwiając im efektywne przekształcanie statycznych formularzy HTML w dynamiczne rozwiązania. Ta innowacja znacznie upraszcza proces tworzenia, czyniąc go bardziej elastycznym i przyjaznym dla użytkownika.
Właściciele rodzinnych pizzerii mogą łatwo zintegrować system zamawiania online, dodając kilka tagów do swoich formularzy HTML. To nie tylko uprości proces zamawiania, ale także umożliwi skonfigurowanie powiadomień e-mail. Takie podejście zapewnia wygodę zarówno klientom, jak i właścicielom firm, umożliwiając efektywne zarządzanie zamówieniami i lepszą obsługę klienta.
Nazwę projektu zaproponował Adam Abrons. Projekt powstał jako dodatek do HTML. Składnia HTML wykorzystuje nawiasy kątowe, co zainspirowało nazwę Angular, co tłumaczy się jako „kątowy”. Angular to potężne narzędzie do tworzenia aplikacji internetowych, które umożliwia tworzenie dynamicznych i responsywnych interfejsów.
Domena angular.com była zajęta, dlatego programiści postanowili zarejestrować nową domenę getangular.com dla swojego projektu.

Angular zyskał ogromną popularność dzięki zbiegowi okoliczności. Brad Greene, menedżer Miško Heveriego w Google, zlecił mu opracowanie wewnętrznego projektu – narzędzia Google Feedback Tool. Aplikacja ta miała zbierać opinie użytkowników, w tym recenzje produktów firmy i sugestie ulepszeń. Rozwój tego narzędzia stał się punktem wyjścia do stworzenia Angulara, który później stał się jednym z najpopularniejszych frameworków aplikacji internetowych.
Miško i jego dwaj współpracownicy napisali około 17 000 linii kodu w ciągu sześciu miesięcy pracy, korzystając z frameworka GWT. Wraz ze wzrostem ilości kodu pojawiały się trudności ze zrozumieniem i debugowaniem. Ciągłe pisanie nowego kodu prowadziło do zamieszania, które utrudniało dalszą pracę nad projektem. Podkreśla to wagę organizacji kodu i stosowania najlepszych praktyk programistycznych, aby zachować jego czytelność i łatwość debugowania.
Miško założył się z Bradem, że uda mu się wdrożyć podobny projekt w Angularze w dwa tygodnie. Ostatecznie zajęło mu to trzy tygodnie, co i tak zrobiło wrażenie na Greenie. Nowy projekt zawierał zaledwie około 1500 linii kodu, co było znaczącym osiągnięciem. Green był zadowolony z rezultatu i zatwierdził dalsze prace nad Angularem. W ten sposób ulubiony projekt dwóch przyjaciół uzyskał oficjalny status, otwierając nowe możliwości rozwoju.
Nie wszyscy w Google byli pewni sukcesu nowego frameworka. Starszy menedżer techniczny Urs Hölzle zauważył: „Nie oszukujcie siebie i innych: tak, odnieśliście sukces dzięki jednemu małemu projektowi, ale to tylko kropla w morzu według standardów Google. Prawdziwa radość nadejdzie dopiero po wdrożeniu większego projektu”.
Przyszłość potwierdziła, że Urs nie do końca wykorzystał możliwości swojego dzieła. Angular szybko wykroczył poza Google i stał się popularnym narzędziem wśród programistów na całym świecie. Ten framework aplikacji internetowych zyskał uznanie za swoją elastyczność i potężną funkcjonalność, co czyni go jednym z wiodących rozwiązań w dziedzinie front-end developmentu.
Dlaczego Angular jest tak potężny
Pojawienie się Angulara sprawiło, że projektanci i twórcy stron internetowych poczuli ulgę. Wcześniej frameworki traktowały HTML i CSS jako prymitywne narzędzia, których doświadczeni programiści nie powinni używać. Angular zmienił to podejście, poświęcając im uwagę i szacunek, na jaki zasługują. Ten framework integruje HTML i CSS z procesem tworzenia, umożliwiając tworzenie bardziej złożonych i interaktywnych aplikacji internetowych. W rezultacie Angular stał się niezbędnym narzędziem w arsenale współczesnych twórców stron internetowych, otwierając nowe możliwości wdrażania pomysłów i poprawy doświadczenia użytkownika.
Programiści wysoko ocenili koncepcję dwukierunkowego wiązania danych. Technologia ta pozwala na natychmiastowe odzwierciedlenie zmian danych na stronie internetowej, a także zapisuje zmiany użytkownika w zmiennych powiązanych. Takie podejście znacznie usprawnia interakcję między użytkownikiem a interfejsem, czyniąc go bardziej intuicyjnym i dynamicznym. Dwukierunkowe wiązanie danych jest ważnym aspektem nowoczesnego tworzenia stron internetowych, zapewniając wygodę i wydajność pracy z interfejsami użytkownika.
Technologia ta znacznie przyspieszyła proces tworzenia aplikacji, eliminując potrzebę dodatkowej warstwy działań formularza przetwarzania. Teraz programiści mogą uniknąć przesyłania zmienionych danych do współdzielonej pamięci masowej, a także pobierania ich w celu wyświetlenia zaktualizowanej strony. Pozwala im to skupić się na bardziej efektywnej implementacji funkcjonalności i ulepszaniu interfejsu użytkownika, co ostatecznie poprawia wydajność i jakość aplikacji.
Angular oferuje potężny mechanizm wstrzykiwania zależności, który znacznie upraszcza zarządzanie zależnościami w aplikacjach. Chociaż technologia ta istniała na długo przed Angularem i była wykorzystywana w językach takich jak Java i C#, jej zastosowanie w front-endzie stało się szczególnie istotne. Wstrzykiwanie zależności pozwala programistom na łatwą integrację kluczowych usług, takich jak HttpClient, co prowadzi do bardziej modułowego i testowalnego kodu. Ta funkcjonalność sprawia, że Angular jest atrakcyjnym wyborem do tworzenia skalowalnych aplikacji internetowych.
Podobnie, to samo dotyczy usługi animacji i wrapperów dla standardowych obiektów „window” i „location”, które są teraz dostępne do testów jednostkowych. Narzędzia te pozwalają programistom na efektywniejsze testowanie funkcjonalności aplikacji internetowych, zapewniając wygodny dostęp do elementów interfejsu użytkownika i ich zachowania. Testy jednostkowe mogą teraz obejmować animacje i interakcje z oknami, co znacznie poprawia jakość i niezawodność kodu.
Obiekty „window” i „location” to wbudowane obiekty przeglądarki, które umożliwiają zarządzanie oknami i adresami URL. Za ich pomocą można otwierać nowe okna, ładować zasoby pod określonymi adresami URL i zmieniać adres bieżącej strony. Obiekt „window” odpowiada za tworzenie i zarządzanie oknami przeglądarki, natomiast obiekt „location” zapewnia dostęp do informacji o bieżącym adresie URL, a także funkcje jego zmiany. Narzędzia te są niezbędne dla programistów internetowych, umożliwiając efektywną interakcję z użytkownikiem i dynamiczną aktualizację zawartości strony. Testowanie jednostkowe obiektów powiązanych z przeglądarką jest trudne, ponieważ wyniki testów porównawczych mogą się różnić w zależności od używanej przeglądarki. Angular oferuje jednak wygodne wrappery do pracy z tymi obiektami, znacznie upraszczając proces testowania. Korzystając z Angulara, programiści mogą tworzyć bardziej niezawodne i przewidywalne testy funkcji przeglądarki, co przyczynia się do wyższej jakości aplikacji internetowych i lepszego doświadczenia użytkownika. Komponenty można tworzyć i ponownie wykorzystywać za pomocą dyrektyw Angulara. Pozwala to na optymalizację kodu i poprawę struktury, zwiększając wydajność programowania. Ponowne wykorzystywanie komponentów pomaga skrócić czas programowania i ułatwia utrzymanie aplikacji. Dyrektywy Angulara odgrywają kluczową rolę w tworzeniu dynamicznych i responsywnych interfejsów użytkownika, co poprawia ogólną wydajność aplikacji internetowych.
Angular. Nowe zagrożenia
Wraz z otwarciem puszki Pandory pojawiły się nowe problemy w rozwoju aplikacji internetowych. W 2013 roku narodził się React, stworzony przez zespół Facebooka. W 2014 roku dołączył do niego Vue.js, który szybko zyskał popularność wśród deweloperów dzięki swojej prostocie i elastyczności. Narzędzia te zmieniły podejście do tworzenia interfejsów, zapewniając deweloperom potężne narzędzia do tworzenia nowoczesnych aplikacji internetowych.
Vue.js nie jest wspierany przez dużą firmę, ponieważ jego rozwojem i popularyzacją zajmuje się zespół kierowany przez Evana Yu, byłego pracownika Google, a obecnie niezależnego dewelopera. Evan Yu twierdzi, że framework został zainspirowany Angularem, ale usunięto jego zbędną złożoność, czyniąc Vue bardziej przystępnym dla deweloperów.
React to potężna biblioteka JavaScript, która w połączeniu z innymi narzędziami umożliwia tworzenie szybkich i responsywnych aplikacji internetowych. Biblioteka ta jest szczególnie ceniona za swoją prostotę, wysoką wydajność i niski próg wejścia dla deweloperów. Dzięki Reactowi można łatwo tworzyć interfejsy zapewniające doskonałą interakcję z użytkownikiem, co czyni go popularnym wyborem w nowoczesnym tworzeniu stron internetowych.
Najpoważniejszy cios dla reputacji frameworka nastąpił w 2014 roku, kiedy jego twórcy ogłosili nową wersję Angulara, która nie była wstecznie kompatybilna z poprzednimi wersjami. Aby wyraźnie rozróżnić te dwie gałęzie, stara wersja zaczęła nazywać się AngularJS, a nowa, wprowadzona jako Angular 2, zaczęła być nazywana po prostu Angular. Decyzja ta wywołała mieszane reakcje wśród programistów i użytkowników, ponieważ migracja na nową platformę i dostosowanie istniejących projektów wymagała znacznego wysiłku.

Po pojawieniu się tych doniesień użytkownicy Angulara zaczęli nieufnie patrzeć w przyszłość tego frameworka. Wielu zaczęło rozważać przejście do konkurencji podczas tworzenia nowych projektów, a znaczna liczba programistów faktycznie opuściła platformę.
Angular. Odrodzenie
Nowy Angular zachowuje swoją funkcjonalność, ale stał się bardziej przystępny do nauki. Zmniejszenie liczby abstrakcji znacznie uprościło proces opanowywania frameworka przez programistów. Teraz nie ma potrzeby pamiętania różnic między fabrykami, kontrolerami i usługami, które wcześniej sprawiały trudności początkującym. W rezultacie kod stał się bardziej zrozumiały i czytelny, co przyczynia się do efektywnego tworzenia aplikacji.
Angular 2 został przepisany w TypeScript, który jest rozszerzeniem JavaScript. Silne typowanie oferowane przez TypeScript znacznie upraszcza pracę programistów z dokumentacją i kodem źródłowym. Jasno zdefiniowane typy i metody służą jako samodokumentacja, co pozwala na szybszą nawigację w projekcie i poprawia jakość kodu. Zastosowanie TypeScript w Angular 2 sprzyja wydajniejszemu tworzeniu aplikacji internetowych, zapewniając wysoki poziom niezawodności i łatwości utrzymania. Fani czystego JavaScript nie zostali pominięci: zachowano możliwość pisania kodu w czystym JavaScript. Co więcej, programiści poczynili krok w kierunku Dart, uruchamiając gałąź dla programowania Angular z obsługą Dart. Zaowocowało to powstaniem oddzielnego projektu o nazwie Angular Dart, który rozszerza możliwości Angulara o ten język programowania. Od czasu poprzednich wydań wprowadzono liczne aktualizacje, a pod koniec 2020 roku ukazał się Angular 11. Nowe wersje wprowadziły znaczące ulepszenia i nowe funkcje, które jeszcze bardziej usprawniły tworzenie aplikacji. Na przykład, najnowsze aktualizacje poprawiły wydajność, dodały nowe narzędzia do testowania i optymalizacji oraz zaktualizowały biblioteki, aby uprościć pracę z komponentami. Te zmiany pozwalają programistom tworzyć szybsze i bardziej responsywne aplikacje, spełniające współczesne wymagania.
- Kompilacja z wyprzedzeniem (AOT) — kompilacja wstępna. Pozwoliło to na zmniejszenie rozmiaru pakietów i czasu ładowania strony.
- Renderowanie po stronie serwera — generowanie stron na serwerze. Przyciągnęło to programistów, którzy chcieli skrócić początkowy czas ładowania; takie podejście zmniejsza również liczbę żądań do serwera i rozmiar skryptów, które użytkownicy są zmuszeni pobierać na swoje komputery.
- Wygodniejszy HttpClient — dzięki przeprojektowanej składni metody dostępu do serwera są łatwiejsze i szybsze w pisaniu.
- Obsługa wielu języków interfejsu. Łatwiejsza implementacja wielojęzyczności na wszystkich poziomach interfejsu (od pozycji menu po komunikaty).
- Ulepszony CLI (Command Line Interface) — interfejs wiersza poleceń. Umożliwia szybkie tworzenie różnych struktur Angulara: komponentów, usług, modułów. Teraz nie trzeba ręcznie tworzyć plików dla nowych elementów aplikacji z poprawnymi adnotacjami, a także testów dla nich, co uwalnia czas programistów na naprawdę ważne zadania — na przykład implementację logiki.
- Nowy zoptymalizowany renderer Ivy. Pozwala zmniejszyć rozmiar finalnego pakietu, co cieszy użytkowników starszych urządzeń. Programiści doceniają również przyspieszone przeładowywanie stron po kompilacji. Renderer jest wciąż dopracowywany, a planowane są kolejne ulepszenia.
Od momentu premiery framework Angular 2 przywrócił zaufanie programistów rozczarowanych przejściem z AngularJS na starsze rozwiązania. Angular 2 zaoferował nowoczesne podejście do tworzenia aplikacji internetowych, zapewniając stabilność i wydajność, co przyciągnęło uwagę wielu specjalistów programistycznych.
Nowy, zaawansowany Angular stał się atrakcyjnym wyborem dla programistów korporacyjnych. Podczas tworzenia i utrzymywania aplikacji długoterminowych, znaczenie niezawodnego frameworka staje się oczywiste. Angular zapewnia stabilne wydania i minimalne zmiany w architekturze, umożliwiając programistom łatwą adaptację do nowych wersji. Na przykład przejście z Angulara 2 na Angulara 5, a nawet Angulara 11 nie wymaga znacznego wysiłku, co czyni je idealnym rozwiązaniem dla długoterminowych projektów.

