1. Czym są zaawansowane aplikacje internetowe, czyli wstęp lekko historyczny

1.4. Wzrost znaczenia języka JavaScript

Wracając do przeszłości, z jednej strony ograniczenia transmisyjne wymuszały niewielki rozmiar stron, ale z drugiej wskazywały na potrzebę manipulowanie zawartością prezentowanej strony internetowej po stronie przeglądarki w reakcji na działania użytkownika strony. Jedną z koncepcji było założenie, że komunikacja z serwerem (jako czasochłonna) powinna zachodzić wyłącznie w sytuacji absolutnej konieczności i ograniczać się do przesyłania wyłącznie niezbędnych danych (w miejsce przesyłania stron w całości renderowanych po stronie serwera). 

Na tę okoliczność twórcy przeglądarki Netscape zaproponowali w 1995 roku osadzenie w ich przeglądarce interpretera nowegojęzyka programowania, jakim został JavaScript. JavaScript pozwolił na wprowadzanie manipulacji na elementach strony, tzw. w drzewie DOM (ang. Document Object Model) po załadowaniu treści strony z serwera. W rezultacie możliwe stało się m.in. dynamiczne osadzanie nowych treści na stronie, zmiana właściwości elementów, reagowanie na zdarzenia powodowane przez użytkownika (np. na kliknięcie, na ruch myszy nad danym elementem strony, itp.) a także na asynchroniczna komunikacja z serwerem. Ten ostatni element spopularyzował się przy wykorzystaniu koncepcji AJAX (ang. Asynchronous JavaScript and XML) dla tworzenia aplikacji internetowych, które wreszcie zaczęły działać relatywnie szybko. AJAX umożliwia wymianę z serwerem samych informacji (początkowo głównie w formie obiektów XML, później zdecydowanie częściej w formacie JSON), bez ich formatowania za pomocą kodu HTML, a sama budowa elementów drzewa DOM odbywa się jawnie za pomocą kodu JavaScript po stronie klienta. 

Podejście to jest popularne również współcześnie, choć dynamizm budowania drzewa DOM można dziś określić mianem 100% - otóż korzystając ze współczesnych bibliotek i frameworków JavaScript takich jak np. React, Vue, AngluarJS, praktycznie cały interfejs użytkownika aplikacji może być (i w praktyce bardzo często jest) generowany dynamicznie po stronie klienta. Ponadto frameworki organizują kod części frontendowej aplikacji internetowych pod względem architektonicznym i zapewniają szereg narzędzi rozwiązujących typowe problemy związane m.in. z zarządzaniem stanem aplikacji, synchronizacją zmian elementów drzewa DOM itp.

Warto tutaj nadmienić, że w tzw. międzyczasie, na kilkanaście lat rozbłysła gwiazda technologii ożywiających strony internetowe za pomocą różnego rodzaju „wtyczek” pozwalających uruchamiać aplety Javy, multimedialne i atrakcyjne pod względem graficznym obiekty w technologiach Macromedia Flash i Microsoft Silverlight, czy nawet odtwarzacze multimedialne zainstalowane w systemie operacyjnym komputera, na którym działała przeglądarka. Było to dość karkołomne rozwiązanie z uwagi na konieczność instalacji dodatkowych wtyczek lub środowisk uruchomieniowych, a poza tym rodziło trudności z zapewnieniem bezpieczeństwa. Technologie Flash i Silverlight na szczęście odeszły w niepamięć wkrótce po upowszechnieniu się wsparcia dla nowoczesnych języków HTML5 oraz CSS3 w popularnych przeglądarkach (były to okolice roku 2015). Więcej na temat tej zmiany technologicznej przeczytasz w artykule: Jerry Smith - Moving to HTML5 Premium Media.