Bundle-analyse en strategie voor codesplitsing
Analyseer de bundelomvang met rollup-plugin-visualizer en bepaal per route een strategie voor codesplitsing.
Bundle-analyse en strategie voor codesplitsing is een gratis React Academy-les op CoddyKit. Dit is les 2 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject React Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus React Academy bevat in totaal 4 lessen.
Waarom bundelgrootte belangrijk is
Grote JavaScript-bundels vertragen Time To Interactive. Elke KB aan JS moet worden gedownload, geparseerd en uitgevoerd voordat de pagina interactief wordt — vooral op trage mobiele netwerken.
Analyseren met rollup-plugin-visualizer
Gebruik in Vite-projecten de visualisatieplug-in om een treemap van je bundel te genereren, waarop je ziet welke modules de meeste ruimte innemen.
// 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 treemapBundelanalyser van Next.js
Gebruik @next/bundle-analyzer om server- en clientbundels in Next.js te analyseren.
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 buildOp routes gebaseerde codesplitsing
De meest effectieve splitsing is: laad de code van elke route pas wanneer de gebruiker ernaartoe navigeert. React Router met lazy() en de Next.js App Router doen dit automatisch.
// 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>Codesplitsing op componentniveau
Stel het laden van zware componenten (kaarten, grafieken, editors) uit tot ze nodig zijn met 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>}
</>
);
}Dynamisch importeren voor voorwaardelijke functies
Importeer grote bibliotheken pas wanneer een functie wordt geactiveerd, zodat je ze niet voor alle gebruikers hoeft te laden.
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');
}Tree shaking
Moderne bundelaars verwijderen ongebruikte exports (dode code). Zorg dat je afhankelijkheden ESM (en niet CJS) ondersteunen, zodat tree shaking werkt, en importeer niet een volledige bibliotheek wanneer je maar één functie gebruikt.
// 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';Kritieke chunks vooraf laden
Gebruik <link rel='modulepreload'> of speciale opmerkingen van Webpack om de chunk van de volgende pagina vooraf te laden terwijl de gebruiker op de huidige pagina is.
// Webpack magic comment — preload on hover:
const Dashboard = lazy(() => import(/* webpackPrefetch: true */ './Dashboard'));
// or preload (higher priority):
const Dashboard = lazy(() => import(/* webpackPreload: true */ './Dashboard'));De impact van externe pakketten analyseren
Gebruik bundlephobia.com of de Import Cost-extensie voor VS Code om de gegzipte grootte van een npm-pakket te bekijken voordat je het installeert.
Een bundelbudget instellen
Stel in de configuratie van Webpack of Vite een groottelimiet per route in. De build mislukt als een chunk het budget overschrijdt, zodat onbedoelde regressies in de grootte in CI worden gevonden.
// vite.config.ts
build: {
rollupOptions: {
output: {
manualChunks: {
'vendor-react': ['react', 'react-dom'],
'vendor-router': ['react-router-dom'],
},
},
},
chunkSizeWarningLimit: 200, // warn at 200KB
},Snelle controle
Wat is de meest effectieve strategie voor codesplitsing in React-SPA's met veel pagina's?
Samenvatting
Analyseer bundels met rollup-plugin-visualizer of @next/bundle-analyzer. Gebruik op routes en componenten gebaseerde splitsingen met lazy(). Pas tree shaking toe door alleen te importeren wat je gebruikt. Stel groottelimieten in CI in en gebruik aanwijzingen voor vooraf ophalen en vooraf laden voor de waarschijnlijk volgende route.
Leer React met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 88
- Lessen
- 324
Veelgestelde vragen
Is de les “Bundle-analyse en strategie voor codesplitsing” gratis?
Ja — de volledige tekst van “Bundle-analyse en strategie voor codesplitsing” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus React Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus React Academy bevat in totaal 4 lessen.
Wat leer ik in “Bundle-analyse en strategie voor codesplitsing”?
Analyseer de bundelomvang met rollup-plugin-visualizer en bepaal per route een strategie voor codesplitsing. Je oefent met React Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met React Academy te beginnen?
Ervaring vooraf is niet nodig. React Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.
Hoe lang duurt de les “Bundle-analyse en strategie voor codesplitsing”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over React Academy?
Ja. Elke les over React Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Core Web Vitals meten in React-apps
- Bundle-analyse en strategie voor codesplitsing
- Afbeeldingen en fonts optimaliseren in React
- INP verlagen: event-handlers optimaliseren