Analisis Bundel & Strategi Pemisahan Kode
Analisis ukuran bundel dengan rollup-plugin-visualizer dan tetapkan strategi pemisahan kode berdasarkan rute.
Analisis Bundel & Strategi Pemisahan Kode 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.
Mengapa Ukuran Bundel Penting
Bundel JavaScript yang besar menunda Time To Interactive. Setiap KB JS harus diunduh, diuraikan, dan dijalankan sebelum halaman menjadi interaktif—terutama pada jaringan seluler yang lambat.
Menganalisis dengan rollup-plugin-visualizer
Dalam proyek Vite, gunakan plugin visualizer untuk membuat diagram treemap bundel yang menunjukkan modul mana yang paling banyak menggunakan ruang.
// vite.config.ts
import { visualizer } from 'rollup-plugin-visualizer';
export default defineConfig({
plugins: [
visualizer({ open: true, gzipSize: true, brotliSize: true })
],
});
// After build, open the generated HTML file to explore the treemapPenganalisis Bundel Next.js
Gunakan @next/bundle-analyzer untuk menganalisis bundel server dan klien di Next.js.
npm install @next/bundle-analyzer
// next.config.js
const withBundleAnalyzer = require('@next/bundle-analyzer')({
enabled: process.env.ANALYZE === 'true',
});
module.exports = withBundleAnalyzer({});
// Run:
// ANALYZE=true npm run buildPemisahan Kode Berbasis Rute
Pemisahan yang paling berdampak adalah memuat kode setiap rute hanya saat pengguna menavigasinya. React Router dengan lazy() dan Next.js App Router melakukannya secara otomatis.
// React Router v6 with lazy loading
import { lazy, Suspense } from 'react';
const Dashboard = lazy(() => import('./pages/Dashboard'));
const Settings = lazy(() => import('./pages/Settings'));
<Routes>
<Route path="/dashboard" element={<Suspense fallback={<Loading />}><Dashboard /></Suspense>} />
<Route path="/settings" element={<Suspense fallback={<Loading />}><Settings /></Suspense>} />
</Routes>Pemisahan Kode Tingkat Komponen
Tunda pemuatan komponen berat (peta, grafik, editor) hingga diperlukan menggunakan lazy().
const MonacoEditor = lazy(() => import('@monaco-editor/react'));
const MapView = lazy(() => import('./MapView'));
function ProductEditor({ showMap }) {
return (
<>
<Suspense fallback={<EditorSkeleton />}><MonacoEditor /></Suspense>
{showMap && <Suspense fallback={<MapSkeleton />}><MapView /></Suspense>}
</>
);
}Impor Dinamis untuk Fitur Kondisional
Impor pustaka besar hanya saat suatu fitur diaktifkan agar pustaka tersebut tidak dimuat untuk semua pengguna.
async function exportToPDF() {
const { default: jsPDF } = await import('jspdf'); // ~300KB — loaded on demand
const doc = new jsPDF();
doc.text('Hello', 10, 10);
doc.save('export.pdf');
}Penghapusan Kode Tak Terpakai
Bundel modern menghapus ekspor yang tidak digunakan (kode mati). Pastikan dependensi Anda mendukung ESM, bukan CJS, agar penghapusan kode tak terpakai berfungsi, dan hindari mengimpor seluruh pustaka jika Anda hanya menggunakan satu fungsi.
// Bad — imports entire lodash (~70KB):
import _ from 'lodash';
const result = _.debounce(fn, 300);
// Good — imports only debounce (<2KB):
import debounce from 'lodash/debounce';
// or with tree-shaking-friendly lodash-es:
import { debounce } from 'lodash-es';Memuat Awal Chunk Kritis
Gunakan <link rel='modulepreload'> atau komentar khusus Webpack untuk memuat awal chunk halaman berikutnya saat pengguna masih berada di halaman saat ini.
// Webpack magic comment — preload on hover:
const Dashboard = lazy(() => import(/* webpackPrefetch: true */ './Dashboard'));
// or preload (higher priority):
const Dashboard = lazy(() => import(/* webpackPreload: true */ './Dashboard'));Menganalisis Dampak Pihak Ketiga
Gunakan bundlephobia.com atau ekstensi Import Cost untuk VS Code guna melihat ukuran terkompresi gzip dari paket npm sebelum memasangnya.
Menetapkan Anggaran Ukuran Bundel
Tetapkan batas ukuran untuk setiap rute dalam konfigurasi Webpack atau Vite. Build akan gagal jika sebuah chunk melebihi anggaran, sehingga regresi ukuran yang tidak disengaja dapat terdeteksi di CI.
// vite.config.ts
build: {
rollupOptions: {
output: {
manualChunks: {
'vendor-react': ['react', 'react-dom'],
'vendor-router': ['react-router-dom'],
},
},
},
chunkSizeWarningLimit: 200, // warn at 200KB
},Pemeriksaan Cepat
Apa strategi pemisahan kode yang paling berdampak untuk SPA React dengan banyak halaman?
Ringkasan
Analisis bundel dengan rollup-plugin-visualizer atau @next/bundle-analyzer. Gunakan pemisahan berbasis rute dan tingkat komponen dengan lazy(). Terapkan penghapusan kode tak terpakai dengan hanya mengimpor yang Anda gunakan. Tetapkan anggaran ukuran di CI dan gunakan petunjuk prefetch/preload untuk rute berikutnya yang kemungkinan besar dibuka.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Analisis Bundel & Strategi Pemisahan Kode” gratis?
Ya — teks lengkap “Analisis Bundel & Strategi Pemisahan Kode” 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 “Analisis Bundel & Strategi Pemisahan Kode”?
Analisis ukuran bundel dengan rollup-plugin-visualizer dan tetapkan strategi pemisahan kode berdasarkan rute. 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 “Analisis Bundel & Strategi Pemisahan Kode” 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
- Mengukur Core Web Vitals dalam Aplikasi React
- Analisis Bundel & Strategi Pemisahan Kode
- Optimasi Gambar & Font dalam React
- Mengurangi INP: Optimasi Penangan Event