Optimasi Bundle: Kecilkan JavaScript
Code splitting, tree shaking, dan lazy loading
Tujuan Pembelajaran
- Memahami cara mengoptimasi JavaScript bundle
- Bisa mengimplementasikan code splitting dan lazy loading
Analogi
Bundle = Koper Perjalanan:
Tanpa Optimasi:
[Koper besar] → Semua pakaian (musim panas + dingin + hujan)
Dengan Optimasi:
[Koper kecil] → Pakaian yang perlu saja
[Sisa] → Kirim nanti kalau dibutuhkan
Optimasi bundle seperti packing — bawa hanya yang perlu
Penjelasan Konsep
JavaScript Bundle
JavaScript Bundle adalah file JS hasil compile semua kode aplikasi. Semakin besar bundle, semakin lambat website loading-nya.
Teknik Optimasi
Code Splitting
Pecah bundle menjadi chunk yang lebih kecil. User hanya download kode untuk halaman yang dikunjungi.
Tree Shaking
Hapus kode yang tidak pernah dipakai (dead code elimination). Vite dan Webpack melakukan ini otomatis.
3. Lazy Loading
Tunda download komponen/resource sampai dibutuhkan.
Minification
Hapus whitespace, rename variable jadi 1 huruf.
Gzip/Brotli Compression
Kompres file di server sebelum dikirim ke browser.
Inti yang Perlu Dipahami
Bagian ini berfokus pada memahami cara mengoptimasi JavaScript bundle., dan bisa mengimplementasikan code splitting dan lazy loading. Jangan terburu-buru menghafal istilahnya. Lebih penting untuk memahami peran setiap konsep dan kapan konsep itu muncul dalam pekerjaan web development.
Saat membaca Optimasi Bundle, gunakan tujuan belajar sebagai penanda arah. Kalau kamu sudah bisa menjelaskan tujuan itu dengan kata-katamu sendiri, berarti fondasinya mulai terbentuk.
Cara Membayangkannya
Optimasi bundle seperti packing — bawa hanya yang perlu. Analogi ini dipakai supaya konsep teknis tidak terasa melayang. Hubungkan setiap istilah dengan perannya: siapa yang meminta, siapa yang memproses, data apa yang berpindah, dan hasil apa yang diharapkan.
Kalau analoginya sudah terasa masuk akal, barulah lihat istilah teknisnya. Cara ini membuat materi lebih mudah dipahami daripada langsung menghafal definisi.
Saat Melihat Contoh Kode
Contoh kode pada chapter ini memakai bahasa javascript. Bacalah contoh kode sebagai ilustrasi alur, bukan sebagai bagian yang harus langsung dihafal. Baris 2-14: React.lazy + Suspense. Baris 16-19: Dynamic import. Baris 22-33: Manual chunks di Vite.
Perhatikan nama fungsi, urutan langkah, dan data yang berpindah. Biasanya tiga hal itu sudah cukup untuk memahami hubungan antara teori dan praktik.
Konteks dalam Perjalanan Belajar
Setiap konsep di platform ini dipilih karena dipakai di industri. Fokus pada pemahaman, bukan hafalan.
Kamu sedang membangun skill inti. Setelah bagian ini, kamu bisa memilih spesialisasi sesuai minat: frontend, backend, atau DevOps.
Gunakan pertanyaan reflektif dan prompt AI di akhir chapter sebagai latihan aktif. Membaca saja tidak cukup — kamu perlu menjelaskan ulang dengan kata-katamu sendiri.
Contoh Kode
// CODE SPLITTING — React.lazy
import { lazy, Suspense } from 'react';
const Dashboard = lazy(() => import('./Dashboard'));
const Reports = lazy(() => import('./Reports'));
function App() {
return (
<Suspense fallback={<Loading />}>
<Routes>
<Route path="/dashboard" element={<Dashboard />} />
<Route path="/reports" element={<Reports />} />
</Routes>
</Suspense>
);
}
// DYNAMIC IMPORT
const loadChartLibrary = async () => {
const { Chart } = await import('./heavy-chart-library');
return new Chart();
};
// WEBPACK/VITE — Manual split
// vite.config.js
export default {
build: {
rollupOptions: {
output: {
manualChunks: {
vendor: ['react', 'react-dom'],
ui: ['@mui/material', '@mui/icons-material']
}
}
}
}
};
// ANALYZE BUNDLE
npx vite-bundle-visualizerPenjelasan Kode
Prompt AI
Jelaskan bedanya code splitting dan lazy loading.
Pertanyaan Reflektif
Analyze bundle-mu. Paling besar dari library apa? Bisa di-split?