Bundle-Analyse und Strategie zur Codeaufteilung
Analysieren Sie die Bundle-Größe mit rollup-plugin-visualizer und legen Sie eine routenbasierte Strategie zur Codeaufteilung fest.
Bundle-Analyse und Strategie zur Codeaufteilung ist eine kostenlose React Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des React Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.
Warum die Bundle-Größe wichtig ist
Große JavaScript-Bundles verzögern die Time To Interactive. Jedes KB JavaScript muss heruntergeladen, geparst und ausgeführt werden, bevor die Seite interaktiv wird – besonders in langsamen Mobilfunknetzen.
Analyse mit rollup-plugin-visualizer
Verwenden Sie in Vite-Projekten das Visualizer-Plugin, um eine Treemap Ihres Bundles zu erzeugen, die zeigt, welche Module den meisten Platz belegen.
// 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 treemapNext.js Bundle Analyzer
Verwenden Sie @next/bundle-analyzer, um Server- und Client-Bundles in Next.js zu analysieren.
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 buildRoutenbasiertes Code-Splitting
Die wirkungsvollste Form des Splittings: Laden Sie den Code jeder Route erst, wenn der Nutzer zu ihr navigiert. React Router mit lazy() und der Next.js App Router erledigen dies 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>Komponentenbasiertes Code-Splitting
Verzögern Sie das Laden umfangreicher Komponenten (Karten, Diagramme, Editoren), bis sie benötigt werden, indem Sie lazy() verwenden.
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>}
</>
);
}Dynamischer Import für bedingte Funktionen
Importieren Sie große Bibliotheken erst, wenn eine Funktion aktiviert wird, damit sie nicht für alle Nutzer geladen werden.
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 Bundler entfernen nicht verwendete Exporte (toten Code). Stellen Sie sicher, dass Ihre Abhängigkeiten ESM (nicht CJS) unterstützen, damit Tree Shaking funktioniert, und vermeiden Sie den Import kompletter Bibliotheken, wenn Sie nur eine Funktion verwenden.
// 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';Kritische Chunks vorladen
Verwenden Sie <link rel='modulepreload'> oder Webpack Magic Comments, um den Chunk der nächsten Seite vorzuladen, während der Nutzer die aktuelle Seite verwendet.
// Webpack magic comment — preload on hover:
const Dashboard = lazy(() => import(/* webpackPrefetch: true */ './Dashboard'));
// or preload (higher priority):
const Dashboard = lazy(() => import(/* webpackPreload: true */ './Dashboard'));Auswirkungen von Drittanbieter-Code analysieren
Verwenden Sie bundlephobia.com oder die VS-Code-Erweiterung Import Cost, um die gezippte Größe eines npm-Packages vor der Installation zu prüfen.
Ein Bundle-Budget festlegen
Legen Sie in der Webpack- oder Vite-Konfiguration ein Größenlimit pro Route fest. Der Build schlägt fehl, wenn ein Chunk das Budget überschreitet, und erkennt so versehentliche Größenregressionen in der CI.
// vite.config.ts
build: {
rollupOptions: {
output: {
manualChunks: {
'vendor-react': ['react', 'react-dom'],
'vendor-router': ['react-router-dom'],
},
},
},
chunkSizeWarningLimit: 200, // warn at 200KB
},Kurztest
Welche Code-Splitting-Strategie ist für React-SPAs mit vielen Seiten am wirkungsvollsten?
Zusammenfassung
Analysieren Sie Bundles mit rollup-plugin-visualizer oder @next/bundle-analyzer. Verwenden Sie routen- und komponentenbasiertes Splitting mit lazy(). Nutzen Sie Tree Shaking, indem Sie nur das importieren, was Sie tatsächlich verwenden. Legen Sie Größenbudgets in der CI fest und verwenden Sie Prefetch-/Preload-Hinweise für die wahrscheinlich nächste Route.
Häufig gestellte Fragen
Ist die Lektion „Bundle-Analyse und Strategie zur Codeaufteilung“ kostenlos?
Ja — der vollständige Text von „Bundle-Analyse und Strategie zur Codeaufteilung“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des React Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Bundle-Analyse und Strategie zur Codeaufteilung“?
Analysieren Sie die Bundle-Größe mit rollup-plugin-visualizer und legen Sie eine routenbasierte Strategie zur Codeaufteilung fest. Du übst React Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um React Academy zu starten?
Keine Vorkenntnisse erforderlich. React Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Bundle-Analyse und Strategie zur Codeaufteilung“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser React Academy-Lektion Code schreiben und ausführen?
Ja. Jede React Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Core Web Vitals in React-Apps messen
- Bundle-Analyse und Strategie zur Codeaufteilung
- Bild- und Font-Optimierung in React
- INP reduzieren: Optimierung von Event-Handlern