Node.js to platforma powstała w 2009 roku, wciąż zyskująca na popularności. Wszystko to za sprawą języka JavaScript, który jest jej sercem.

Od wielu lat, najpopularniejszym językiem programowania dynamicznych stron internetowych jest PHP. To technologia, po którą najczęściej sięgają osoby, uczące się tworzenia stron internetowych, zaraz po tym, gdy nauczą się podstaw języków HTML, CSS i być może również JavaScript. Trzy wymienione przed momentem języki, pozwalały do niedawna tworzyć jedynie tę warstwę strony internetowej, która działa po stronie klienta.

Innymi słowy, po stronie serwera wykonywane były operacje polegające na pobraniu danych z bazy, odpowiednim wstawieniu ich do widoków HTML, a następnie wraz z dodatkowymi zasobami, takimi jak style CSS czy pliki z kodem JavaScript, przesłanie tego wszystkiego do przeglądarki internetowej. To właśnie to miejsce określa się mianem “po stronie klienta”. Kiedy przeglądarka otrzyma wszystkie te zasoby, interpretuje je i odpowiednio renderuje dla użytkownika końcowego stronę www.

Podział ról

Język HTML służy wyłącznie do tworzenia struktury strony internetowej, a język CSS do nadawania jej wyglądu. Jeśli jednak chcemy sprawić, by strona czy aplikacja była interaktywna, musimy skorzystać z języka JavaScript. To właśnie z jego pomocą przypisujemy odpowiednie akcje dla klikniętego przycisku czy walidujemy dane wpisane do formularza rejestracyjnego. Te trzy języki znać powinien każdy, kto określa się mianem Front-end Developera.

W ostatnich latach pojawił się jednak nowy termin – Full Stack Web Developer. Takim tytułem określamy osobę, która zna nie tylko technologie klienckie (HTML, CSS, JavaScript), ale także potrafi pisać kod, wykonywany po stronie serwera. Do tego wszystkiego należy dodać jeszcze wiedzę z zakresu systemów baz danych czy protokołu HTTP. Stanowisko to jest nie tylko prestiżowe, ale również satysfakcjonujące. Wszystko to za sprawą posiadanej wiedzy, która pozwala stworzyć działający serwis od A do Z – zarówno warstwę działającą po stronie klienta, jak i po stronie serwera.

Do niedawna jednak, aby z pozycji Front-end Developera wskoczyć w świat back-endu, musieliśmy uczyć się języków takich jak np. PHP, Ruby czy Python. Byłoby jednak prościej, gdybyśmy mogli wykorzystać już posiadaną wiedzę z zakresu języka JavaScript po stronie serwera. I dokładnie to umożliwia nam platforma Node.js!

JavaScript wszędzie!

Dzięki Node.js możemy pisać zaplecza serwerowe, wykorzystując język JavaScript. Im lepiej zatem znasz ten język, tym więcej wyciśniesz z Node! Jedyne czego należy się nauczyć, to API platformy Node.js. Dobra wiadomość jest taka, że nie jest ono szczególnie skomplikowane, choć mimo wszystko, filozofia Node znacząco różni się od innych platform (takich jak np. PHP).

Warto również zaznaczyć, że dobry programista powinien znać przynajmniej kilka języków programowania, a każdy z nich traktować jedynie jako narzędzie. Podobnie jak dobry rzemieślnik wie do jakiego zadania warto użyć młotka, a kiedy skorzystać z piły, dobry programista powinien wybierać odpowiednie narzędzie, do odpowiedniego zadania.

Do czego zatem wykorzystać platformę Node.js?

Zastosowanie Node.js

Platforma ta jak każda inna, ma swoje plusy i minusy, które mogą ujawniać się dopiero wtedy, gdy poznamy problem, który musimy rozwiązać. Choć w teorii Node.js może nam zastąpić dowolną inną platformę, to są sytuacje, gdy nie będzie on dla danego zadania najlepszym możliwym wyborem.

Node sprawdzi się natomiast znakomicie, głównie przy aplikacjach sieciowych, nie wymagających dużych zasobów obliczeniowych. Jeśli zatem dla każdego podłączonego klienta wykonywać będziemy stosunkowo “lekkie” zadanie, np. pobranie danych z bazy i odesłanie ich w formacie JSON, to Node powali swoją konkurencję na kolana. Widoczne będzie to szczególnie wtedy, gdy serwer otrzymywać będzie ogromną liczbę zapytań na sekundę. Okażę się, że Node nie tylko radzi sobie z tym znakomicie, ale i zużywa mało zasobów serwera (głównie pamięci RAM).

Platforma ta będzie idealna dla wszelkiego rodzaju aplikacji sieciowych typu real-time, a więc takich, które przesyłają dane w dwóch kierunkach, bez ponownego podłączania się do serwera. Idealnym przykładem takiego zastosowania będzie aplikacja czatu. Po pierwszym podłączeniu do serwera, użytkownik może przesyłać swoje wiadomości dalej, a także, w tym samym czasie, otrzymywać wiadomości od innych. Innym przykładem może być gra sieciowa typu multiplayer lub aplikacja do wyświetlania danych giełdowych na żywo.

Wymienione wyżej zastosowania to obszary, gdzie Node radzi sobie niesłychanie dobrze. Nie zmienia to jednak faktu, że nie są to jedyne, słuszne zadania, które możemy tej platformie powierzyć. Jeśli zatem chciałbyś stworzyć stronę WWW z panelem administracyjnym, który umożliwi np. dodawanie wpisów, a także z warstwą front-endową, która te wpisy wyświetli – możesz bez obaw wykorzystać Node.js.

Aby dokładnie zrozumieć, dlaczego Node lepiej nadaje się do pewnych zadań, a do innych być może warto wykorzystać inne technologie, należy dogłębnie zrozumieć serce tej platformy, a także jednowątkową naturę języka JavaScript.

Społeczność nie śpi!

Niebywałą zaletą platformy Node.js jest fakt, iż jej społeczność jest ogromna i cały czas się rozrasta. Wraz z rozwojem społeczności, pojawiają się nowe moduły, które wykorzystać możemy we własnych projektach dzięki npm.

Z tego powodu, nie musimy “odkrywać koła na nowo”, a jedynie skupić się na tym, co chcemy osiągnąć. Rdzeń API Node.js jest niewielki, a większość wbudowanych modułów daje nam niskopoziomową kontrolę. Oznacza to tylko tyle, że bez użycia zewnętrznych modułów, możemy zrobić naprawdę wiele, ale też wiele musimy się napracować. Jest to jednak świadoma decyzja twórców Node, którzy nie chcą dyktować tego, jak ta platforma powinna wyglądać. Oferują nam oni niewielkie, lecz potężne API, a całą resztę pozostawiają społeczności.

Z tego powodu powstaje bardzo wiele modułów, które ze sobą konkurują. Jedne są mniej popularne, inne bardziej. Decydując się na wybór popularnego modułu, mamy zazwyczaj pewność, że jest on stabilny i dobrze przetestowany, a także nieustannie rozwijany.

Jeśli zatem chcesz stworzyć szybko aplikację webową, dodać do niej możliwość logowania się za pomocą Facebook’a czy zintegrować ją z bazą danych – znajdziesz do tego gotowe do użycia moduły.

Skok w świat back-endu

Jeśli zatem jesteś Front-end Developerem i znasz język JavaScript, to Node będzie idealnym narzędziem, by tę wiedzę przenieść na back-end. Będziesz mógł pisać swoje aplikacje, wykorzystując wyłącznie jeden język programowania, co ma oczywiście swoje istotne zalety. Gotów?

Kurs Node.js w Praktyce

Jeśli opisane wyżej koncepcje nie są dla Ciebie jeszcze jasne lub jesteś na tyle zaciekawiony, że chciałbyś poznać od podstaw platformę Node.js – mamy dobrą wiadomość!

Właśnie ukazał się ponad 10-cio godzinny kurs pt. Node.js w Praktyce. Materiał ten od podstaw wprowadzi Cię w świat tej technologii. Jeśli zatem znasz język JavaScript i chcesz tę wiedzę wykorzystać po stronie serwera, koniecznie zapoznaj się z tym materiałem!