Podstawy Module Federation
Poznanie sposobu, w jaki Module Federation umożliwia współdzielenie mikrofrontendów
Podstawy Module Federation to bezpłatna lekcja HTML Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej HTML Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs HTML Academy zawiera 4 lekcji w sumie.
Czym jest Module Federation?
Module Federation umożliwia aplikacji JavaScript ładowanie i wykonywanie w czasie działania kodu z innej, niezależnie wdrażanej aplikacji. Wzorzec ten powstał w Webpack 5, a obecnie można go również realizować za pomocą natywnych map importów i dynamicznego importu.
Zastosowanie
Duże organizacje dzielą monolity na wiele niezależnie wdrażanych „mikrofrontendów” — aplikację powłoki oraz kilka aplikacji funkcjonalnych. Module Federation pozwala powłoce ładować poszczególne funkcje na żądanie, bez łączenia ich podczas kompilacji.
Federacja w Webpack
W Webpack 5 aplikacja hosta deklaruje element remotes (inne aplikacje, z których korzysta), a aplikacje zdalne deklarują element exposes (oferowane elementy). Podczas uruchamiania środowisko wykonawcze pobiera niewielki manifest z każdej aplikacji zdalnej, a następnie pobiera fragmenty, gdy host je importuje.
Natywne odpowiedniki
Bez Webpack ten sam pomysł działa z mapami importów wskazującymi zdalne bundlowane moduły ESM oraz z dynamicznym importem do ich ładowania. Mapa importów hosta zawiera wpis "feature-cart": "https://cart-team.example.com/entry.js"; wywołanie import("feature-cart") ładuje najnowszą wdrożoną wersję.
<script type="importmap">
{
"imports": {
"feature-cart": "https://cart.example.com/v1/entry.js",
"feature-checkout": "https://checkout.example.com/v2/entry.js"
}
}
</script>Współdzielone zależności
Bez koordynacji każda aplikacja zdalna dostarczałaby własną kopię React. Narzędzia federacji umożliwiają deklarowanie współdzielonych zależności — pierwsza aplikacja zdalna, która załaduje React, udostępnia go wszystkim pozostałym. Podejścia natywne używają map importów, aby kierować każdą aplikację zdalną do tego samego adresu URL React.
Niezależne wdrażanie
Każdy zespół jest właścicielem swojej aplikacji zdalnej i wdraża ją wtedy, gdy chce. Host nigdy nie jest ponownie budowany; pobiera nowe wersje przy kolejnym ładowaniu strony (lub po unieważnieniu pamięci podręcznej). Całkowicie rozdziela to cykle wydań.
Strategie wersjonowania
Aplikacje zdalne należy przypinać do wersjonowanych adresów URL (/v1/entry.js, /v2/entry.js), aby aktualizacja hosta była zamierzona, a nie niejawna. Niektóre zespoły używają dopasowywania wersji semver na poziomie mapy importów za pomocą narzędzi takich jak JSPM.
Kompromisy
Federacja zwiększa złożoność działania w czasie wykonywania: oznacza więcej żądań sieciowych, utrudnia debugowanie między źródłami i niesie ryzyko niezgodności współdzielonych zależności. Należy jej używać, gdy niezależne wdrażanie jest rzeczywiście potrzebne; w mniejszych projektach pojedyncza kompilacja jest prostsza i szybsza.
Izolowanie błędów
Awaria jednego zdalnego modułu nie powinna powodować awarii hosta. Należy opakować dynamiczne importy w granice błędów (React) lub bloki try/catch (vanilla) i wyrenderować zastępczy interfejs, gdy zdalny moduł ulegnie awarii. Powłoka aplikacji pozostaje funkcjonalna, nawet jeśli dana funkcja jest tymczasowo niedostępna.
Bezpieczeństwo typów
Eksporty zdalnego modułu nie mają informacji o typach dostępnych w czasie kompilacji po stronie hosta. Należy wygenerować współdzielone typy TypeScript w osobnym pakiecie używanym przez obie strony albo zastosować walidację w czasie działania (Zod, io-ts) na granicy federacji.
Rozwiązania natywne a narzędzia
Natywna federacja (import maps + ESM) jest prostsza i oparta na standardach, ale nie zapewnia koordynacji współdzielonych zależności dostępnej w Webpack. Należy wybrać Webpack/Module Federation w przypadku złożonych aplikacji z wieloma współdzielonymi zależnościami, a rozwiązanie natywne w prostszych konfiguracjach mikrofrontendów.
Kierunek rozwoju
W3C bada bogatsze mechanizmy ładowania modułów, które zwiększyłyby możliwości natywnej federacji — w tym umożliwiłyby lepsze uzgadnianie współdzielonych zależności. Obecnie należy traktować import maps jako fundament, a narzędzia do federacji nakładać na tę podstawę.
Sprawdzenie wiedzy
Jaki jest główny powód używania Module Federation w dużej aplikacji?
Podsumowanie
Module Federation pozwala hostowi ładować w czasie działania kod z niezależnie wdrażanych zdalnych modułów. Narzędzia Webpack 5 dodają uzgadnianie współdzielonych zależności, a natywna federacja korzysta z import maps i dynamicznego importu. To rozwiązanie jest przeznaczone dla architektur mikrofrontendowych z wieloma zespołami; w zamian za niezależność wdrażania trzeba zaakceptować większą złożoność.
Często zadawane pytania
Czy lekcja „Podstawy Module Federation” jest bezpłatna?
Tak — pełny tekst „Podstawy Module Federation” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu HTML Academy, przejdź na CoddyKit PRO. Kurs HTML Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Podstawy Module Federation”?
Poznanie sposobu, w jaki Module Federation umożliwia współdzielenie mikrofrontendów Ćwiczysz HTML Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć HTML Academy?
Nie wymagamy żadnego doświadczenia. HTML Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Podstawy Module Federation”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji HTML Academy?
Tak. Każda lekcja HTML Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Skrypty modułów ES — type=module
- Mapy importu — importmap
- Dynamiczny import() w modułach
- Podstawy Module Federation