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

1/13/2025 Kurs JavaScript

Mateusz Kędziora

image

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

  1. Stwórz moduł, który będzie zawierał funkcje do obliczania pola kwadratu, prostokąta i trójkąta.
  2. Stwórz moduł, który będzie generował losowy kolor w formacie HEX.
  3. 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