Pierwsza aplikacja w Node.js

Zanim napiszemy pierwszy skrypt w Nodejs, troszeczkę teorii.

Aplikacje pisane w Node.js posiadają modułową architekturę. Każdy plik .js stanowi swój odrębny moduł, a zmienne, które w nim deklarujemy posiadają scope w obrębie tego modułu. W odróżnieniu od czystego javascriptu w przeglądarkach, gdzie

var zmienna = 5

znajduje w scopie globalnym i może wywołana przez window.zmienna. W Node.js tak nie zrobimy.

Ale Node.js również posiada obiekty globalne, a zdefiniowane w nich metody dostępne są dla programistów w każdym miejscu tworzonej aplikacji. Ich lista znajduje się w oficjalnej dokumentacji https://nodejs.org/api/globals.html. Jednym z obiektów globalnych według tej dokumentacji jest console. Oznacza to, że możemy sobie z tego obiektu i jego metod korzystać od razu, bez importowania dodatkowych modułów. Sprawdźmy więc, czy tak jest w istocie i przy okazji napiszmy naszą pierwszą aplikację w Node.js 😉 Aplikacja będzie korzystać – jakżeby inaczej – z popularnej metody console.log().

W dowolnym miejscu na swoim komputerze stwórz pusty plik apka.js. Ja zrobię to tutaj: c:\node-apps\apka.js. Następnie umieść w nim ten kod:

var zmienna = 'Czy Node jest fajny? Zobaczymy!';
console.log(zmienna);

Oto i nasza pierwsza aplikacja. Zapisujemy plik apka.js. Otwieramy wiersz poleceń i uruchamiamy aplikację komendą node apka.js

tutorial-node-js-jak-pisac

(oczywiście pamiętamy aby komendę wykonać będąc w tym samym katalogu wiersza poleceń, w którym jest plik apka.js)

Powinniśmy otrzymać taki wynik:

tutorial-node-js-pierwsza-aplikacja

Jak widzimy, dokumentacja Node.js nie kłamie, możemy korzystać z obiektów globalnych do woli. Przy okazji stworzyliśmy poprawnie działającą pierwsza aplikację w Node.js 😉

Dokumentacja głosi także, że oprócz tych obiektów globalnych unikalnych dla Node.js, możemy dodatkowo korzystać globalnie z pokaźnej listy obiektów (a zatem też ich metod) wbudowanych globalnie w 'rdzeń’ javascriptu, np. Number, Math, Date, Array. Ich wykaz znajduje się pod tym linkiem: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects. Przekonajmy się, czy tak rzeczywiście jest. Skoro możemy korzystać z funkcji przypisanych do obiektu String, to slice() powinno zadziałać. Robimy zmiany w kodzie naszej apki, aby uciąć tekst z oryginalnego zdania do 20-ej litery i wyświetlić to, co zostało:

var zmienna = 'Czy Node jest fajny? Zobaczymy!';
var odp = zmienna.slice(21);
console.log(odp);

Rzeczywiście tak jest, aplikacja wyświetliła poprawny wynik:

nodejs-dla-poczatkujacych

Przy wyświetlaniu stringów w Node.js możemy też zastosować tzw. interpolację i połączyć naszą zmienną z jakimś innym tekstem. Używamy wtedy grawisów, czyli czegoś takiego: `. Jest to znak umieszczony najczęściej na klawiaturze przed klawiszem z cyfrą 1 i nad klawiszem TAB (pierwszy w rzędzie z klawiszami numerycznymi.). Następnie przed nazwą zmiennej umieszczamy znak dolara i zamykamy ją w klamerkach {} :

console.log(`Czy Node.js jest fajny? ${odp}`);

Nasza aplikacja zwróci wtedy taki wynik:

tutorial-node-js-interpolacja

Funkcja require()

Nasza aplikacja potwierdziła, że w Node.js możemy korzystać z wielu globalnych obiektów i metod. Jedną z ważniejszych funkcji dostępnych globalnie jest require(). Używa się jej do importowania modułów Node.js. Zobaczmy jak działa. Na początku pliku apka.js dodajemy linijkę:

var path = require("path")

Path to moduł dostępny natywnie w Node.js od razu po jego zainstalowaniu i zgodnie ze swoją nazwą – zajmuje się zarządzaniem 'ścieżkami’. W powyższej linii 'zaciągneliśmy’ go sobie do zmiennej o tej samej nazwie – path.

Następnie kasujemy w naszej aplikacji kolejne dwie linie:

var zmienna = 'Czy Node jest fajny? Zobaczymy!’; var odp = zmienna.slice(21);

Zostawiamy tylko ostatnią:

console.log(`Czy Node.js jest fajny? ${odp}`);

Ale zmieniamy ją, aby miała taką treść:

console.log(`Witamy z aplikacji Node.js, z pliku ${path.basename(__filename)}`);

Jak widzisz korzystamy tu z metody modułu path o nazwie basename, która zwraca pełną nazwę ścieżki do aktualnego pliku. Natomiast w połączeniu z parametrem __filename zwraca tylko nazwę aktualnego pliku. Po powyższych zmianach, kod całej aplikacji to tylko dwa wiersze:

var path = require("path")
console.log(`Witamy z aplikacji Node.js, z pliku ${path.basename(__filename)}`);

Uruchamiamy aplikację. Jak już wiesz, robimy to komendą node apka.js jednak możemy pominąć rozszerzenie pliku .js i wpisać tylko node apka. Komenda node uruchamia pliki .js domyślnie, dlatego można rozszerzenie pominąć. Przy okazji – kolejną rzeczą, którą możemy pominąć to średniki na końcu linijek w kodzie – tak samo jak w javascript, nie ma to wpływu na poprawność kodu. To, czy je stosujesz, zależy od Twoich preferencji.

Po uruchomieniu aplikacji powinniśmy mieć wynik, który jest nazwą pliku z kodem źródłowym naszej aplikacji:

tutorial-node-js-jak-uruchomic-aplikacje

To wszystko, co chciałem przedstawić w tej lekcji. Zachęcam do lektury powyższych linków do dokumentacji Node.js i zabawy z innymi funkcjami dostępnymi globalnie. I oczywiście do kolejnej części kursu.