Mengonfigurasi Aplikasi React Host dan Jarak Jauh
Siapkan expose, remote, dan dependensi bersama dalam webpack.config.js untuk shell host dan dua remote React.
Mengonfigurasi Aplikasi React Host dan Jarak Jauh adalah pelajaran React Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar React Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus React Academy mencakup 4 pelajaran total.
Konfigurasi Penyedia webpack.config.js: ModuleFederationPlugin
Aplikasi penyedia menambahkan ModuleFederationPlugin ke konfigurasi webpack-nya dengan tiga properti utama: name, yaitu pengenal unik, misalnya "buttonApp"; filename, yaitu "remoteEntry.js" sebagai keluaran manifest; dan exposes, yaitu pemetaan dari nama publik ke jalur berkas sumber.
Mengekspos Komponen dari Aplikasi Penyedia
Konfigurasi exposes memetakan jalur modul publik ke berkas lokal: { './Button': './src/Button' }. Artinya, aplikasi pemuat dapat mengimpor 'buttonApp/Button' dan menerima komponen dari ./src/Button.tsx. Anda dapat mengekspos beberapa komponen, utilitas, atau bahkan seluruh halaman.
Konfigurasi Bersama pada Aplikasi Penyedia
Properti shared memberi tahu Module Federation modul mana yang harus dibagikan antara aplikasi pemuat dan aplikasi penyedia, bukan digandakan. Untuk React: shared: { react: { singleton: true, requiredVersion: deps.react }, 'react-dom': { singleton: true } }. singleton:true mencegah beberapa instans dimuat secara bersamaan.
Konfigurasi Host webpack.config.js: Merujuk Aplikasi Penyedia
Konfigurasi ModuleFederationPlugin aplikasi pemuat menyertakan properti remotes: { buttonApp: 'buttonApp@http://localhost:3001/remoteEntry.js' }. Kuncinya adalah ruang nama impor, sedangkan nilainya menggabungkan nama dan URL aplikasi penyedia dengan @—yang memberi tahu Webpack tempat mengambil aplikasi penyedia saat berjalan.
Menggunakan Aplikasi Penyedia di React
Dalam kode React aplikasi pemuat, impor komponen penyedia dengan impor dinamis: const Button = React.lazy(() => import('buttonApp/Button')). Jalur impor tersebut sesuai dengan ruang nama aplikasi penyedia dan nama modul yang diekspos. React.lazy membuat impor tersebut mengalami pemisahan kode dan dimuat secara asinkron.
Membungkus dengan Suspense
Karena modul penyedia dimuat secara asinkron, selalu bungkus komponen penyedia yang diimpor secara malas dalam batas Suspense: Suspense fallback=Loading... /. Cadangan tersebut ditampilkan saat Module Federation mengambil remoteEntry.js dan potongan komponen dari URL aplikasi penyedia.
Mengapa Singleton Sangat Penting
Pengait React (useState, useContext, useEffect) bergantung pada satu instans internal React untuk melacak status komponen. Jika aplikasi pemuat dan aplikasi penyedia masing-masing memuat salinan React sendiri, pengait akan menghasilkan kesalahan "invalid hook call". singleton:true memaksa keduanya berbagi satu instans React, sehingga sepenuhnya mengatasi kategori kesalahan ini.
Penyelesaian Konflik Versi
Saat aplikasi pemuat menggunakan react@18.2.0 dan aplikasi penyedia menggunakan react@18.3.0, cakupan bersama Module Federation menegosiasikan versi mana yang akan digunakan. Dengan singleton:true dan requiredVersion, biasanya versi yang lebih tinggi digunakan jika kompatibel. Menetapkan requiredVersion: '>=18.0.0', bukan versi tetap, memungkinkan rentang versi yang fleksibel.
TypeScript: Deklarasi Modul
TypeScript tidak mengetahui modul penyedia saat waktu kompilasi, sehingga impor seperti import('buttonApp/Button') akan menghasilkan kesalahan tipe tanpa deklarasi. Gunakan @module-federation/typescript atau buat berkas .d.ts secara manual untuk mendeklarasikan tipe modul, sehingga Anda memperoleh keamanan tipe untuk properti komponen penyedia.
Menguji Penyiapan Secara Lokal
Jalankan kedua aplikasi secara bersamaan: aplikasi penyedia pada porta 3001 dan aplikasi pemuat pada porta 3000. Buka aplikasi pemuat—runtime Module Federation-nya akan mengambil http://localhost:3001/remoteEntry.js, menemukan modul Button, mengunduh potongannya, dan menampilkannya di dalam aplikasi pemuat seolah-olah itu komponen lokal.
Konfigurasi URL Produksi
Dalam produksi, ganti localhost:3001 dengan URL aplikasi penyedia yang telah diterapkan. Pola yang umum adalah menggunakan variabel lingkungan untuk URL aplikasi penyedia agar CI/CD dapat menyisipkan URL yang benar untuk setiap lingkungan: buttonApp: 'buttonApp@' + process.env.BUTTON_REMOTE_URL + '/remoteEntry.js'.
Modul Bersama Singleton
Mengapa React harus dikonfigurasi sebagai singleton dalam konfigurasi shared Module Federation?
Ringkasan Pelajaran
Konfigurasi Module Federation memerlukan ModuleFederationPlugin pada aplikasi penyedia, dengan name, filename, dan exposes, serta pada aplikasi pemuat, dengan remotes. Gunakan komponen aplikasi penyedia melalui React.lazy + impor dinamis yang dibungkus dalam Suspense. React dan React DOM harus menjadi singleton bersama untuk mencegah kesalahan pengait akibat beberapa instans. Deklarasi TypeScript dan URL aplikasi penyedia dari variabel lingkungan melengkapi penyiapan yang siap produksi.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Mengonfigurasi Aplikasi React Host dan Jarak Jauh” gratis?
Ya — teks lengkap “Mengonfigurasi Aplikasi React Host dan Jarak Jauh” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus React Academy, upgrade ke CoddyKit PRO. Kursus React Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Mengonfigurasi Aplikasi React Host dan Jarak Jauh”?
Siapkan expose, remote, dan dependensi bersama dalam webpack.config.js untuk shell host dan dua remote React. Kamu berlatih React Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai React Academy?
Tidak diperlukan pengalaman sebelumnya. React Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Mengonfigurasi Aplikasi React Host dan Jarak Jauh” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran React Academy ini?
Ya. Setiap pelajaran React Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Federasi Modul: Impor Runtime Dinamis
- Mengonfigurasi Aplikasi React Host dan Jarak Jauh
- Berbagi Status dan Perutean Antar-Remote
- Pemberian Versi, Penerapan, dan Orkestrasi