Najcześciej jeżeli mówi się o frameworku dla Node.js to myślmy o Express.js. Jest najpopularniejszy, znajdziemy bardzo dużo informacji o nim oraz powstało na jego postawie wiele aplikacji. Jednak Express.js to nie wszystko - istnieją inne równie dobre frameworki. Jednym z nich jest Koa, który osobiście bardzo mi się spodobał.
Inne wpisy o Koa
- Koa.js - middlewares
- Koa.js - obsługa błędów
Koa.js
Framework Koa jest dziełem twórców frameworka Express. Został stworzony z myślą by dostarczał minimalny interfejs do budowania aplikacji z wykorzystaniem Node.js. jeżeli zerkniecie do kodu na Github to zauważycie, iż kodu jest naprawdę mało - tylko to co jest wykorzystywane przy każdym zapytaniu (czyli jest najbardziej potrzebne) znajduje się w głównej bibliotece. Koa polega na middlewares, które rozszerzają możliwości biblioteki o dodatkowe możliwości. Dzięki temu jesteśmy w stanie uzyskać minimalny rozmiar biblioteki budując naszą aplikację tylko z potrzebnych elementów. Kolejny element, który odróżnia Koa od Express to rezygnacja z korzystania callbacks na rzecz wprowadzonych do JS'a nowości w postaci async/await. Dzięki temu kod wygląda dużo czyściej co wie każdy kto spotkał się kiedyś z callback hell
Wymagania oraz instalacja Koa
Z racji tego iż korzystamy z async to Node musi być w wersji przynajmniej v7.6.0. Jednak nie powinien to być problem skoro za chwilę wyjdzie wersja 12 LTS - zachęcam do aktualizowania i korzystania z nowości, które się pojawiają w każdej wersji. Aby teraz zacząć korzystać z tego frameworka musimy go zainstalować tym poleceniem:
Hello World
Skoro wszystko co potrzebne mamy zainstalowane to możemy napisać pierwszą aplikację, którą będziemy standardowo Hello World. Jak będzie wyglądał taki kod?
Jeśli pisaliście coś kiedyś w Expressie to kod będzie wyglądał dla was znajomo.
Na samym początku mamy import samej biblioteki oraz inicjalizację aplikacji. Dodatkowo też każdą aplikację chcemy uruchomić do czego służy polecenie app.listen(). Możemy podać tam dwa parametry:
- Pierwszy określa numer portu pod jakim uruchomimy aplikację
- Drugi parametr jest opcjonalny i możemy tam przekazać funkcję, która zostanie wywołana jeżeli aplikacja się poprawnie uruchomi
Wszystko to co jest pomiędzy to jest adekwatna część aplikacji. Tym razem korzystamy z tylko jednego middleware'a - za każdym razem gdy korzystamy z funkcji app.use to rejestrujemy nowy middleware, z którego będziemy korzystać. Dokładnie o middlewarach będę pisać w kolejnym poście - tutaj tylko wspominam o tym na potrzeby tego przykładu.
Za każdym razem gdy wykonamy zapytanie na serwer to zostają wywołane wszystkie middleware'y - każdy z nich może w pewien sposób modyfikować odpowiedź. W pierwszym Hello World zwracamy w odpowiedzi nasz tekst oraz ustawiamy status odpowiedzi na 200 - Koa automatycznie ustawia status jako 404.
Teraz żeby to uruchomić musimy wrócić do konsoli i wpisać
I tyle - aplikacja działa. Jedyny problem to, iż jeżeli zrobimy jakieś zmiany w kodzie to musimy manualnie przeładować naszą aplikację. Tak samo w przypadku błędów - będziemy musieli uruchomić aplikację na nowo. To jak sobie z tym poradzić i jak sobie ułatwić pracę będzie w innym poście.
Dziś to wszystko. Chciałbym te posty były krótkie, konkretne i dotyczyły zagadnienia. W następnym poście napiszę więcej na temat samych middlewares, ponieważ to na nich będzie opierała się cała logika. No i pytanie do was - pracowaliście kiedyś z Koa produkcyjnie, czy tylko Express? jeżeli tak to jak się wam z tym pracowało i jak się sprawdzało w praktyce?