Skip to content

Dynamic Imports oder Code-Splitting #1

Description

@TorstenC

Das ist in Vite extrem einfach umzusetzen. Du wirfst die Imports oben in deiner App.jsx raus und lädst sie erst dynamisch im if-Block:

// 1. Diese beiden Zeilen OBEN in der App.jsx LÖSCHEN!
// import { renderMermaid } from './engines/mermaid';
// import { renderVega } from './engines/vega';

// ...

// 2. Unten im try/catch Block dynamisch importieren (mit 'await import'):
    try {
      const decodedCode = decodePayload(payload);
      setDiagramSource(decodedCode);

      if (engine === 'mermaid') {
         // Läd die 1 MB Mermaid-Bibliothek erst JETZT aus dem Netzwerk
         const { renderMermaid } = await import('./engines/mermaid.js');
         await renderMermaid(decodedCode, containerRef);
      } else if (engine === 'vegalite' || engine === 'vega') {
         // Läd Vega erst JETZT
         const { renderVega } = await import('./engines/vega.js');
         await renderVega(decodedCode, containerRef);
      } else {
         setError(`Engine '${engine}' ist noch nicht implementiert.`);
      }
    } catch (err) {
// ...

Wenn du danach npm run build ausführst, wirst du sehen, dass Vite die große index.js in mehrere kleine Dateien zerschneidet und die Warnung von selbst verschwindet. Die Startzeit des Tools wird dadurch auf einen Bruchteil einer Sekunde sinken.


Noch offen:

  • Werden './engines/vega.js' und './engines/mermaid.js' bei einer Hash-Änderung jedes mal neu geladen,
  • und ist das ggf. so gewollt?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions