Struktura modułu
W JavaScript, moduł to odseparowany fragment kodu, który odpowiada za określoną funkcjonalność. Moduły pomagają w organizacji kodu i umożliwiają jego wielokrotne wykorzystanie. Główną ideą modułów jest zasada Single Responsibility Principle
, która mówi, że każda jednostka kodu powinna być odpowiedzialna tylko za jedną rzecz.
Przykład prostej struktury modułu
Załóżmy, że tworzymy moduł do obsługi dat. Struktura może wyglądać następująco:
// dateModule.js
// Prywatna funkcja pomocnicza
function formatData(date) {
return date.toISOString().substring(0, 10);
}
// Publiczna funkcja do wyświetlania aktualnej daty
function pokazAktualnaDate() {
const dzisiejszaData = new Date();
console.log(formatData(dzisiejszaData));
}
// Eksport funkcji
export { pokazAktualnaDate }; // jest to skrócona wersja: export { pokazAktualnaDate: pokazAktualnaDate }
W tym przykładzie, funkcja formatData
jest prywatną funkcją wewnętrzną modułu, a pokazAktualnaDate
to funkcja publiczna, którą eksportujemy.
Eksportowanie funkcji, obiektów i zmiennych
Eksportowanie elementów z modułu umożliwia ich wykorzystanie w innych plikach. W JavaScript istnieją dwa główne typy eksportu: named export
i default export
.
Named Export
Eksport nazwany pozwala na eksportowanie wielu elementów z modułu.
// mathModule.js
export function dodaj(a, b) {
return a + b;
}
export const PI = 3.14;
W innym pliku można te elementy zaimportować używając ich nazw:
import { dodaj, PI } from './mathModule.js';
console.log(dodaj(5, 3)); // Wynik: 8
console.log(PI); // Wynik: 3.14
Default Export
Default export
pozwala na eksportowanie pojedynczego elementu z modułu, który można potem zaimportować bez użycia nawiasów klamrowych:
// greetingModule.js
function powitanie(imie) {
return `Cześć, ${imie}!`;
}
export default powitanie;
Import w innym pliku:
import powitanie from './greetingModule.js'; // UWAGA: brak nawiasów klamrowych, możemy zamiast "powitanie" użyć dowolnej nazwy
console.log(powitanie('Anna')); // Wynik: Cześć, Anna!