w Praktyce
10 godz. 44 min · Node.js · Full-stack i Programowanie
Piotr PalarzWeb DeveloperW kursie tym poznasz platformę Node.js od podstaw, aż po bardziej zaawansowane koncepcje. Zaczniemy od omówienia czym jest Node, a także jakie może być zastosowanie tej technologii. Następnie przejdziemy przez proces instalacji i napisanie swojego pierwszego skryptu. Już na samym początku dokładnie omówimy tworzenie własnych modułów, gdyż jest to wiedza niezbędna, by dobrze zrozumieć funkcjonowanie Node. Następnie dowiesz się czym są zdarzenia, jak działa model “publish / subscribe”, a także czym jest “event-driven development”. Chwilę później omówimy pracę z buforami, stream’ami, a także ze standardowym wejściem i wyjściem. Ta wiedza pozwoli Ci zrozumieć jak tworzone aplikacje mogą otrzymywać od użytkownika dane oraz jak je wyświetlają.
Niezwykle ważnym rozdziałem będzie ten, poświęcony pracy z systemem plików. Szczególnie dla dewelopera, pracującego dotychczas z językiem JavaScript wyłącznie w środowisku przeglądarki internetowej. Node pozwala bowiem tworzyć nowe pliki, zapisywać w nich dane oraz odczytywać i usuwać pliki i katalogi. Przy wszystkich tych operacjach, niezwykle ważna jest jednak asynchroniczna natura Node. Dowiesz się jak działa, a także jakie są jej zalety. Na tym etapie nie zabraknie oczywiście praktycznego projektu, którym będzie aplikacja typu CLI (Command Line Interface). Pozwoli nam ona grupowo zmienić nazwy wielu plików, według podanego wzorca.
W kolejnym rozdziale poruszymy fundamentalną dla Node kwestię, mianowicie tworzenie serwerów sieciowych. Zaczniemy od najniższego poziomu, tworząc prosty serwer bazujący na protokole TCP/IP. Wiedza w jaki sposób Node radzi sobie z takim zadaniem, pozwoli później lepiej zrozumieć wyższe warstwy, takie jak np. HTTP czy WebSockets. Chwilę później stworzymy swój pierwszy serwer HTTP, do którego będzie można wysyłać zapytania wprost z przeglądarki internetowej. Omówimy również jak w Node wykorzystać bezpieczne szyfrowanie HTTPS.Na tym etapie będziesz już miał solidną wiedzę jak pracować z Node, jednak zanim przejdziemy dalej, zatrzymamy się, by omówić jak dokładnie działa Node.js, a także jak ta platforma została zbudowana. Dwie dość obszerne lekcje, będą być może jednymi z najważniejszych w tym kursie. Dowiesz się w nich czym jest, a także jak działa jednowątkowa pętla zdarzeń, czym jest proces i wątek, a także zobaczysz kod źródłowy Node.js i wszystkie bloki budulcowe, z jakich Node się składa. To naszym zdaniem niezwykle ważny temat, często jednak pomijany w wielu materiałach. Dzięki dogłębnemu zrozumieniu jednowątkowej natury języka JavaScript i asynchroniczności Node, będziesz mógł tworzyć dużo lepsze aplikacje.
Node.js posiada kilkanaście wbudowanych modułów, z których w dowolnej chwili można skorzystać. Wszystkie jednak dają nam dużą, niskopoziomową kontrolę, ale czasami sporo kodu należy napisać, by zrealizować jakieś zadanie. Jest to jednak świadomy wybór twórców Node, gdyż całą resztę świetnych rozwiązań, dopisuje nieustannie ogólnoświatowa społeczność deweloperów. Zdecydowana większość z modułów ląduje w rejestrze npm. Jest to genialny package manager, który pozwoli nam wyszukiwać, pobierać i aktualizować niezliczoną ilość modułów. Dowiesz się zatem jak korzystać z npm, a chwilę później zaczniemy wykorzystywać zgromadzone tam moduły w dalszej pracy.Jednym z najpopularniejszych modułów jest express.js, który pozwala w bardzo prosty sposób tworzyć serwery HTTP. Grzechem byłoby zatem z niego nie skorzystać. Dowiesz się wszystkiego co niezbędne, by zacząć tworzyć własne aplikacje bazujące na protokole HTTP z użyciem express.js, a także kilku dodatków do tego systemu. Zobaczysz jak routować zapytania, jak korzystać z middleware czy serwować statyczne pliki. Następnie omówimy współpracę z bazą danych MongoDB i z jej wykorzystaniem stworzymy API typu REST. Stworzona aplikacja pozwoli odczytywać dane z bazy i przesyłać je do klienta w formacie JSON, a także dodawać nowe dane, aktualizować i usuwać je. Wszystko to zgodnie z dobrymi praktykami pracy z REST.
Chwilę później czeka Cię kolejny praktyczny projekt - skracacz linków. Stworzymy wspólnie aplikację, która pozwoli skrócić dowolny adres URL do krótkiej formy. Oczywiście będzie działać również w drugą stronę! Kiedy przejdziemy pod skrócony adres, przekieruje nas do odpowiedniej witryny. Node.js to platforma wręcz stworzona do tworzenia aplikacji typu real-time, dlatego w kolejnym rodziale podejmiemy temat technologii WebSockets. Dowiesz się jakie są jej zalety, a także jak pracować z nią po stronie serwera i klienta. Tutaj czeka nas kolejny praktyczny, niezwykle ciekawy projekt. Wykonamy bowiem czat grupowy. Aplikacja ta pozwoli dowolnej ilości użytkowników podłączyć się do czatu podając swój nick, a następnie wysyłać widoczne dla wszystkich wiadomości. Zaimplementujemy nawet takie rozwiązania jak wyświetlanie statusów o dołączeniu kogoś do czatu, a także o jego opuszczeniu.W przedostatnim rodziale tego kursu podejmiemy tematykę dobrych praktyk pracy z Node.js. Na początku omówimy najważniejsze konstrukcje nowej specyfikacji EcmaScript 2015, które są znakomicie wspierane w Node. Chwilę później omówimy jak korzystanie z Promises uprości, a także ulepszy nasz kod. Wśród dobrych praktyk nie zabraknie również informacji o debugowaniu aplikacji. Zobaczysz sprawdzone sposoby, by znaleźć błędy lub lepiej, krok po kroku, zrozumieć jak działa napisany wcześniej kod. Dowiesz się również jak pracować z błędami, by Twoje aplikacje działały w sposób przewidywalny.
Ostatni rozdział w całości został poświęcony temu, co zwykle jest pomijane w innych materiałach, mianowicie wdrażaniu aplikacji do produkcji. Przez cały ten kurs pracować będziemy lokalnie, lecz kiedy aplikacje są już gotowe, wypadałoby udostępnić je światu. Wdrażanie aplikacji napisanych z użyciem Node.js nie jest jednak tak oczywiste, jak np. wgrywanie WordPress’a u wybranego hostingodawcy. Ty będziesz miał jednak możliwość zobaczyć, jak wdrożyć napisany przez nas grupowy czat na platformie Heroku. Jest to bardzo popularny serwis działający jako PaaS (Platform as a Service). Za darmo będziesz mógł w ciągu kilku chwil uruchomić swoją aplikację.Zobaczysz o co należy zadbać, by wszystko poszło gładko. Serwisy typu PaaS dbają o bardzo wiele aspektów wdrażania i serwowania naszych aplikacji, takich jak bezpieczeństwo oraz nieustanną dostępność. Mają jednak pewne ograniczenia. Z tego powodu, dowiesz się również jak wdrożyć swoją aplikację na serwerze wirtualnym VPS z systemem Ubuntu Server. Takie rozwiązanie daje nam całkowitą kontrolę, ale także obarczone jest większą odpowiedzialnością. Zaczniemy od instalacji na serwerze platformy Node.js, systemu kontroli wersji GIT, a także innych niezbędnych modułów
Następnie zobaczysz jak skonfigurować swoje lokalne środowisko tak, by za pomocą GIT’a wysyłać kod do zdalnego serwera, a potem jednym poleceniem wdrażać go do produkcji. Dowiesz się również jak jednocześnie serwować wersję produkcyjną oraz developmencką. W rodziale tym poruszymy również inne kwestie, takie jak procesy potomne czy tworzenie klastrów. Dzięki tej wiedzy, będziesz mógł maksymalnie wykorzystać dostępne zasoby serwera. Na sam koniec tego kursu rzucimy okiem również na inne, nie przedstawione wcześniej zastosowania Node, a także nakreślimy dalszą drogę nauki w tym zakresie.
Kurs ten jest dla wszystkich osób, które dobrze czują się w technologiach frontendowych, tj. HTML, CSS i JavaScript, a teraz chcą rozpocząć swoją przygodę z back-endem. Im zatem lepiej znasz język JavaScript, tym więcej wyciśniesz z Node, natomiast nie jest wymagana bardzo zaawansowana wiedza z zakresu tego języka.
W tej lekcji pokażę ci, w jaki sposób zainstalować platformę Node dla systemu macOS.
Ja będę z tego systemu korzystał przez cały ten kurs.
Natomiast możesz korzystać oczywiście z innych systemów i znajdziesz odpowiednie lekcje w tym kursie
dla instalacji dla Windowsa, a także dla Linux.
Na początek przejdziemy na stronę projektu, czyli nodejs.org.
I na pierwszy rzut oka widzimy już, że mamy dwie wersje.
Pierwsza z nich jest to wersja LTS, czyli Long Term Support.
I oznacza to tylko tyle, że jest to wersja stabilna, przetestowana i polecana do użycia na serwerach produkcyjnych,
czyli tam, gdzie będziemy mieli aplikacje już gotowe do wystawienia w świat.
W momencie kiedy nagrywam ten kurs, jest to wersja 4.6.0, natomiast kiedy ty go oglądasz, to być może
jest to już inna wersja, ale prawdopodobnie również będziesz tutaj widział wersję LTS.
Natomiast po prawej stronie mamy wersję 6.7.0 Current. Jest to najnowsza obecnie wersja, z której ja będę
korzystał przez cały ten kurs.
Dlatego upewnij się, że pobierzesz najnowszą wersję, i że nie jest ona starsza niż 6.7.0.
Instalacja Node jest bardzo prosta na Macu. Wystarczy, że klikniesz w ten przycisk i pobierzesz instalator.
Następnie będziesz klikał po prostu Next, Next i Node ci się zainstaluje.
Natomiast ja chcę ci pokazać ciut trudniejszą drogę, ale taką, która w przyszłości ci się bardziej opłaci.
Jeżeli chcesz, to możesz tą drogą pójść. Zainstalujemy sobie Node.js z użyciem Brew. I teraz przejdę na
stronę projektu Brew. Jak widzisz, znaleźliśmy się pod adresem
brew.sh.
Jeżeli Brew jeszcze nie masz w systemie, to działa to w ten sposób, że jest to package manager dla systemu
macOS, który pozwala instalować bardzo wiele programów wykonywanych w wierszu poleceń czy w terminalu.
Zaraz zobaczysz, jak to wygląda. I polecam ci właśnie Brew sobie zainstalować.
Jest to dziecinnie proste, dlatego że wystarczy skopiować cały ten ciąg, który widzisz tutaj, i następnie
przejść do terminala. Do terminala możesz przejść na Macu, klikając tutaj, np. na pulpit, aby pojawił nam się
Finder.
Następnie przejdziemy do Go > Utilities.
I tutaj znajdziesz w Utilities Terminal.
Wystarczy go otworzyć i tutaj wkleić to, co przed momentem
kopiowaliśmy. Natomiast krótka uwaga jest taka, że powinieneś być zaznajomiony już z takim okienkiem terminala
i znać podstawowe pojęcia służące poruszaniu się po systemie, abyś mógł korzystać z tego kursu.
Jeżeli jeszcze nie masz takiej podstawowej wiedzy, to koniecznie zajrzyj pod ten adres na blogu eduweb.pl,
gdzie przygotowałem darmowe tutoriale wyjaśniające, jak w systemie plików można się poruszać. I zdobyta
tam wiedza wystarczy spokojnie, aby przerobić cały ten kurs.
Ja natomiast nie korzystam ze standardowego terminala, ale z programu iTerm. Teraz do niego przejdę.
I wygląda to nieco schludniej. Dlatego że iTerm można sobie skonfigurować, aby wyglądał ładniej.
Niemniej jednak wszystkie polecenia, które tutaj wpiszę, działają tak samo w terminalu. Więc tak jak wspomniałem,
tutaj wystarczy ten skopiowany ze strony ciąg wkleić, i wcisnąć Enter i Brew zostanie w naszym systemie
zainstalowane.
Natomiast ja Brew mam już zainstalowane od dawna i kiedy to zrobisz, to takie polecenie będzie tutaj dla ciebie
dostępne.
Teraz z tym poleceniem pokażę ci, jak zainstalować Node.
Zatem, mając Brew, wystarczy, że wpiszemy brew update, aby pobrać najnowsze formuły.
U mnie wyskoczyło: Already up-to-date, dlatego że mam już pobrane najnowsze formuły. U ciebie może tutaj pojawić
się ich lista.
Czyli to jest pierwszy krok. Drugi krok - dziecinnie prosty - jest to brew install node.Taka jedna linijka pozwoli
nam zainstalować w systemie Node.js w najnowszej wersji. Wciskam Enter. Node nam się pobiera, będzie rozpakowywane i
instalowane, nic tutaj już nie musimy robić.
I jak widzisz, po kilku chwilach Brew zakończył swoją pracę.
Nie musiałem tutaj już nic wciskać. Mogę wyczyścić ekran i teraz możemy już odwołać się do polecenia node.
I ono w systemie jest dostępne dzięki temu, że właśnie Brew zainstalował nam Node.
Natomiast jeżeli nie będziesz korzystał z Brew, tylko z tego standardowego instalatora, to po instalacji
również powinieneś pojawić się w tym miejscu, w którym ja jestem teraz, czyli otworzyć terminal i spróbować
wpisać node --version.
W ten sposób. Jeżeli wersja zostanie zwrócona, to znaczy, że polecenie node działa poprawnie, natomiast razem z Node
zainstalował nam się package manager npm, z którego później będziemy korzystać.
Więc wpisz npm --version.
Jeżeli wersja również się pojawi, to oznacza, że zarówno Node, jak i npm są zainstalowane poprawnie.
Na koniec chcę ci jeszcze powiedzieć, dlaczego lepiej było skorzystać z Brew niż ze standardowego instalatora.
Otóż pozwala nam instalować dużo innych rzeczy, więc gdybyś chciał w systemie zainstalować sobie Gita,
to można wpisać brew install git lub możemy wpisać brew install tree.
Są to takie fajne małe programiki, z których warto korzystać. Git nie jest małym programem, ale mamy również
wiele takich ciekawych, małych programów, z których ja w tym kursie czasami również będę korzystał.
Instalacja z użyciem Brew jest dziecinnie prosta.
Podobnie będzie z aktualizacją. Chciałbym ci teraz pokazać cztery kroki, które jeżeli wejdą ci w krew,
to pozwolą ci mieć zawsze najnowsze programy na swoim komputerze. Mianowicie - za każdym razem, kiedy ja
siadam do komputera i otwieram terminal,
to wpisuję sobie brew update.
Jest to pierwsze polecenie, pierwszy krok. I po chwili zostaną nam zaktualizowane wszystkie formuły dla Brew.
U mnie są już one aktualne, ale jeżeli jutro siądę do komputera, to na pewno pojawią się jakieś nowe.
Drugim krokiem będzie wpisanie brew upgrade.
Jeżeli jakiejś formuły zostały zupdate'owane, czyli pobrane od nowa, to upgrade nam je wgra.
Czyli powiedzmy, że jutro pojawi się nowa wersja Node, to po wpisaniu brew update zostanie nam formuła pobrana,
czyli informacja o nowej wersji, a brew upgrade wgra nam nową wersję Node.
Nic więcej nie będziemy musieli robić. Natomiast trzeci krok jest to wpisanie brew cleanup.
Fajne polecenie z tego powodu, że jeżeli coś zostanie zupgrade'owane, to polecenie brew cleanup usunie starą
wersję i w ten sposób będziemy mieli więcej miejsca na dysku.
I ostatnie polecenie, które warto od czasu do czasu również wpisać, to brew doctor.
To polecenie pokaże nam, czy przypadkiem nie mamy jakichś problemów z programikami zainstalowanym z użyciem Brew.
Jeżeli będą, to pojawią się informacje, jak je rozwiązać.
Jak widzisz, te cztery polecenia u mnie nie zwróciły nam nic nowego, bo mam najnowszą wersję zarówno
Brew, jak i wszystkich formuł.
Natomiast wpisuję je zawsze kiedy otwieram terminal i dzięki temu mam najnowszą wersję Gita, najnowszą
wersję Node, a także wielu innych programów, które zainstalowałem z użyciem Brew.
Nieważne zatem, czy skorzystałeś ze standardowego instalatora ze strony nodejs.org, czy zainstalowałeś Node z użyciem Brew.
Jeżeli możesz wpisać node --version i npm --version i zostają zwrócone wersje, to jesteś gotowy, by przejść do kolejnych
lekcji w tym kursie.