Dieses Dokument wurde von KI übersetzt. Für genaue Informationen lesen Sie bitte die englische Version.
ctx.importAsync()
Lädt ESM-Module oder CSS dynamisch über eine URL, anwendbar in verschiedenen RunJS-Szenarien. Verwenden Sie ctx.importAsync(), wenn ESM-Bibliotheken von Drittanbietern erforderlich sind, und ctx.requireAsync() für UMD/AMD-Bibliotheken. Die Übergabe einer .css-Adresse lädt und injiziert die Stile in die Seite.
Anwendungsfälle
Typdefinition
Parameter
Rückgabewert
- Ein Promise, das zum Namespace-Objekt des Moduls aufgelöst wird.
Beschreibung des URL-Formats
- ESM und CSS: Neben ESM-Modulen wird auch das Laden von CSS unterstützt (übergeben Sie eine
.css-URL, um diese zu laden und in die Seite zu injizieren). - Kurzformat: Standardmäßig wird https://esm.sh als CDN-Präfix verwendet, sofern nichts anderes konfiguriert ist. Beispielsweise fragt
vue@3.4.0tatsächlichhttps://esm.sh/vue@3.4.0ab. - ?deps: Bibliotheken, die von React abhängen (wie
@dnd-kit/core,react-big-calendar), sollten?deps=react@18.2.0,react-dom@18.2.0anhängen, um Konflikte mit der React-Instanz der Seite zu vermeiden, die zu Fehlern wie „Invalid hook call“ führen könnten. - Selbstgehostetes CDN: Sie können ein internes Netzwerk oder einen selbstgehosteten Dienst über Umgebungsvariablen angeben:
- ESM_CDN_BASE_URL: Die Basis-URL für das ESM-CDN (Standard ist
https://esm.sh). - ESM_CDN_SUFFIX: Optionales Suffix (z. B.
/+esmfür jsDelivr). - Für selbstgehostete Dienste siehe: nocobase/esm-server
- ESM_CDN_BASE_URL: Die Basis-URL für das ESM-CDN (Standard ist
Unterschied zu ctx.requireAsync()
- ctx.importAsync(): Lädt ESM-Module und gibt den Modul-Namespace zurück. Geeignet für moderne Bibliotheken (ESM-Builds wie Vue, dayjs usw.).
- ctx.requireAsync(): Lädt UMD/AMD-Module oder Skripte, die an den globalen Scope gebunden sind. Wird häufig für UMD-Bibliotheken wie ECharts oder FullCalendar verwendet. Wenn eine Bibliothek sowohl ESM als auch UMD anbietet, wird
ctx.importAsync()bevorzugt.
Beispiele
Grundlegende Verwendung
Demonstriert die einfachste Verwendung des dynamischen Ladens von ESM-Modulen und CSS über den Paketnamen oder eine vollständige URL.
ECharts-Beispiel
Verwendung von ECharts zum Zeichnen eines Verkaufsübersichtsdiagramms mit Balken- und Liniendiagrammen.
Tabulator-Beispiel
Demonstriert das Rendern einer Datentabelle mit Paginierung und Zeilenklick-Ereignissen in einem Block unter Verwendung von Tabulator.
FullCalendar (ESM) Beispiel
Zeigt, wie FullCalendar und seine Plugins über ESM geladen und ein einfacher Kalender in der Monatsansicht gerendert werden.
dnd-kit einfaches Drag-and-Drop-Beispiel
Verwendet @dnd-kit/core, um ein minimales Beispiel für das Ziehen einer Box in einen Zielbereich innerhalb eines Blocks zu implementieren.
Dieses Beispiel basiert nur auf @dnd-kit/core, um eine Benachrichtigung auszulösen, wenn eine Box in einen bestimmten Bereich gezogen wird. Es demonstriert die einfachste Drag-and-Drop-Interaktion durch die Kombination von ctx.importAsync + React in RunJS.
dnd-kit sortierbare Liste Beispiel
Implementiert eine vertikale sortierbare Liste unter Verwendung von dnd-kit Core, Sortable und Utilities.
Dieses Beispiel verwendet @dnd-kit/core, @dnd-kit/sortable und @dnd-kit/utilities, um eine sortierbare Liste zu implementieren, die ihre Reihenfolge aktualisiert und nach dem Ziehen die Meldung „List reordered“ anzeigt.
react-big-calendar Beispiel
Rendert eine Kalenderkomponente mit Unterstützung für die Anzeige von Ereignissen im aktuellen Block unter Verwendung von react-big-calendar und date-fns für die Lokalisierung.
frappe-gantt Beispiel
Verwendet frappe-gantt, um eine Gantt-Diagramm-Ansicht zu rendern, die Start-/Endzeiten und den Fortschritt von Aufgaben anzeigt.
@asseinfo/react-kanban Beispiel
Nutzt @asseinfo/react-kanban, um ein einfaches Kanban-Board mit Spalten wie Backlog und Doing innerhalb eines Blocks zu rendern.
Hinweise
- Diese Funktion ist von einem externen Netzwerk oder CDN abhängig. In internen Netzwerkumgebungen muss ESM_CDN_BASE_URL so konfiguriert werden, dass sie auf einen selbstgehosteten Dienst zeigt.
- Wenn eine Bibliothek sowohl ESM als auch UMD anbietet, bevorzugen Sie
ctx.importAsync()für eine bessere Modulsemantik. - Für Bibliotheken, die von React abhängen, stellen Sie sicher, dass Sie
?deps=react@18.2.0,react-dom@18.2.0anhängen. Die Version muss mit der von der Seite verwendeten React-Version übereinstimmen, da sonst ein „Invalid hook call“-Fehler auftreten kann.
Verwandte Themen
- ctx.requireAsync(): Lädt UMD/AMD oder global gebundene Skripte, geeignet für UMD-Bibliotheken wie ECharts und FullCalendar.
- ctx.render(): Rendert Inhalte in einen Container.

