Node.js to platforma po stronie serwera oparta na języku JavaScript, służąca do tworzenia skalowalnych aplikacji sterowanych zdarzeniami. Może to być mylące nawet dla doświadczonych programistów, ponieważ tradycyjne środowisko JavaScript zawsze działało po stronie klienta – w przeglądarce użytkownika lub w aplikacji komunikującej się z serwerem. JavaScript nie był brany pod uwagę w kontekście odpowiedzi serwera na żądania klienta, ale właśnie to oferuje Node.js.
Node.js nie jest napisany w JavaScript (jest napisany w C++), ale wykorzystuje język JavaScript jako język interpretacyjny do przetwarzania żądań i odpowiedzi po stronie serwera. Innymi słowy, Node.js uruchamia samodzielne programy JavaScript. Zaletą jest to, że programiści mogą wykorzystać swoją aktualną wiedzę programistyczną, choć po stronie klienta, i znacznie łatwiej rozpocząć kodowanie w Node.js.
Co to jest Node.js?
Node.js ma kilka cech, które czynią go szczególnie atrakcyjnym do programowania sieciowego lub przez Internet. Pierwszy z nich dotyczy wszystkich narzutów i pakowania, których używają istniejące technologie do komunikacji przez Internet.
Wyobraź sobie, że wysyłasz małą paczkę firmą FedEx i zwracasz uwagę na wszystkie „kontenery”, w których Twoja paczka jest transportowana do miejsca przeznaczenia. Ciężarówka przewoziłaby wszystkie paczki do lokalnego centrum przetwarzania. W tym centrum znajdowałyby się duże pojemniki, które byłyby przenoszone wózkami widłowymi do kontenerów transportowych samolotów, używanych do transportu do centrum docelowego. Po dotarciu paczki proces ten odbywa się w odwrotnym kierunku, z innymi paczkami transportowanymi w przeciwnym kierunku.
Całe to pakowanie i przepakowywanie to pracochłonny i kosztowny proces, dokładnie taki sam, jaki oferują obecne technologie programistyczne, takie jak JSON i REST, do przesyłania danych przez Internet. Node.js znacznie skraca to przepakowywanie i zapewnia lekki sposób realizacji tego samego zadania.
Drugi atrakcyjny atrybut Node.js dotyczy modelu zdarzeń w programowaniu internetowym. Większość istniejących technologii jest pisana tak, aby pobierać „duże porcje” danych dla każdego żądania i odpowiedzi. Innymi słowy, cała strona danych może zostać wysłana na serwer – nawet jeśli zmiany są niewielkie. Technologie te są zoptymalizowane pod kątem wykorzystania większych fragmentów danych z mniejszą liczbą zdarzeń. Node.js działa odwrotnie; został zaprojektowany z myślą o większej interaktywności – mniejsze fragmenty danych reagują na znacznie więcej zdarzeń.