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
(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:
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:
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:
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:
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.
Nie działają zdjęcia (png)
Niestety u mnie też, już szukałem, czy nie trzeba się wpierw gdzieś zalogować:(