Node.js dla początkujących - Część 7: Moduły
Mateusz Kędziora

Witajcie w kolejnym wpisie z kursu JavaScript dla początkujących! Dziś zajmiemy się niezwykle ważnym tematem, który pozwoli Wam pisać bardziej zorganizowany i czytelny kod – modułami w Node.js. Wyobraźcie sobie, że budujecie dom. Czy wrzucilibyście wszystkie materiały budowlane na jedną kupę? Zapewne nie. Podzielilibyście je na kategorie: cegły, drewno, okna itd. Podobnie działają moduły – porządkują kod i ułatwiają jego ponowne użycie.
Czym są moduły?
Moduł to po prostu fragment kodu, który wykonuje określone zadanie. Może to być zbiór funkcji, klas, zmiennych, a nawet pojedyncza funkcja. W Node.js każdy plik JavaScript jest traktowany jako oddzielny moduł. To trochę jak oddzielne pokoje w naszym domu – każdy ma swoje przeznaczenie.
System modułów CommonJS
Node.js używa systemu modułów o nazwie CommonJS. Dwa kluczowe elementy tego systemu to:
require()
– służy do importowania (dołączania) modułów do naszego pliku.module.exports
– służy do eksportowania (udostępniania) elementów z modułu na zewnątrz.
Eksportowanie modułów
Załóżmy, że mamy plik math.js
, który zawiera funkcje matematyczne:
// math.js
function add(a, b) {
return a + b;
}
function subtract(a, b) {
return a - b;
}
module.exports = {
add: add,
subtract: subtract
};
W tym przykładzie eksportujemy obiekt, który zawiera dwie funkcje: add
i subtract
. Możemy to zapisać krócej, jeśli nazwy kluczy w obiekcie eksportu są takie same jak nazwy funkcji:
// math.js (wersja skrócona)
function add(a, b) {
return a + b;
}
function subtract(a, b) {
return a - b;
}
module.exports = { add, subtract };
Możemy również eksportować pojedynczą wartość, np. funkcję:
// math.js (eksport pojedynczej funkcji)
module.exports = function multiply(a, b) {
return a * b;
};
Importowanie modułów
Aby użyć funkcji z modułu math.js
w innym pliku, np. app.js
, używamy funkcji require()
:
// app.js
const math = require('./math'); // Ścieżka do pliku math.js
const sum = math.add(5, 3);
const difference = math.subtract(10, 4);
console.log('Suma:', sum); // Wyświetli: Suma: 8
console.log('Różnica:', difference); // Wyświetli: Różnica: 6
Jeśli eksportujemy pojedynczą funkcję, importujemy ją bezpośrednio:
// app.js (import pojedynczej funkcji)
const multiply = require('./math');
const product = multiply(2, 6);
console.log('Iloczyn:', product); // Wyświetli: Iloczyn: 12
Przykłady tworzenia własnych modułów
Przykład 1: Moduł z wiadomościami
Utwórzmy moduł messages.js
:
// messages.js
const greetings = ['Cześć!', 'Witaj!', 'Dzień dobry!'];
function getRandomGreeting() {
const randomIndex = Math.floor(Math.random() * greetings.length);
return greetings[randomIndex];
}
module.exports = { getRandomGreeting };
Teraz możemy go użyć w app.js
:
// app.js
const messages = require('./messages');
console.log(messages.getRandomGreeting()); // Wyświetli losowe powitanie
Przykład 2: Moduł z formatowaniem daty
Utwórzmy moduł dateFormatter.js
:
// dateFormatter.js
function formatDate(date) {
return date.toLocaleDateString('pl-PL');
}
module.exports = { formatDate };
Użycie w app.js
:
// app.js
const dateFormatter = require('./dateFormatter');
const today = new Date();
console.log(dateFormatter.formatDate(today)); // Wyświetli dzisiejszą datę w formacie DD.MM.RRRR
Praca domowa
- Stwórz moduł, który będzie zawierał funkcje do obliczania pola kwadratu, prostokąta i trójkąta.
- Stwórz moduł, który będzie generował losowy kolor w formacie HEX.
- Połącz stworzone moduły w jednym programie i przetestuj ich działanie.
Podsumowanie
Moduły to podstawa budowania większych aplikacji w Node.js. Pozwalają na porządkowanie kodu, jego ponowne użycie i ułatwiają pracę w zespole. Zachęcam Was do eksperymentowania z modułami i tworzenia własnych rozwiązań. Pamiętajcie, że praktyka czyni mistrza!
Co dalej?
Jeśli spodobał Ci się ten artykuł, koniecznie przeczytaj pozostałe wpisy z naszego kursu JavaScript dla początkujących. Znajdziesz tam wiele cennych informacji, które pomogą Ci stać się sprawnym programistą JavaScript. W kolejnych postach omówimy m.in. zarządzanie pakietami za pomocą npm, asynchroniczność i wiele innych ciekawych tematów.
Mam nadzieję, że ten artykuł był dla Was pomocny. Do zobaczenia w kolejnych czcęściach kursu!
Polecane artykuły
Docker vs Kubernetes: Który dla Ciebie w 2025?
Docker i Kubernetes objaśnione! Która technologia lepsza dla początkujących w 2025? Porównanie, przykłady i przyszłość.
Mateusz Kędziora
DevOps: Automatyzacja zadań sysadmina dla programistów
Zautomatyzuj pracę sysadmina w środowisku DevOps! Praktyczne przykłady, skrypty, Ansible, Terraform, Prometheus i Grafana.
Mateusz Kędziora
Automatyzacja Linux/macOS z Bash: Praktyczny Przewodnik
Zacznij automatyzować system Linux/macOS z Bash! Dowiedz się, czym jest Bash, jak pisać skrypty i używać podstawowych komend.
Mateusz Kędziora