logologo
Start
Handbuch
Entwicklung
Plugins
API
Startseite
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
Start
Handbuch
Entwicklung
Plugins
API
Startseite
logologo
RunJS Übersicht
Module importieren
Rendern im Container

Globale Variablen

window
document
navigator

ctx

ctx.blockModel
ctx.collection
ctx.collectionField
ctx.dataSource
ctx.dataSourceManager
ctx.element
ctx.exit()
ctx.exitAll()
ctx.filterManager
ctx.form
ctx.getModel()
ctx.getValue()
ctx.getVar()
ctx.i18n
ctx.importAsync()
ctx.initResource()
ctx.libs
ctx.location
ctx.logger
ctx.makeResource()
ctx.message
ctx.modal
ctx.model
ctx.notification
ctx.off()
ctx.on()
ctx.openView()
ctx.render()
ctx.request()
ctx.requireAsync()
ctx.resource
ctx.route
ctx.router
ctx.setValue()
ctx.sql
ctx.t()
ctx.view
Previous PageRunJS Übersicht
Next PageRendern im Container
KI-Übersetzungshinweis

Dieses Dokument wurde von KI übersetzt. Für genaue Informationen lesen Sie bitte die englische Version.

#Module importieren

In RunJS können Sie zwei Arten von Modulen verwenden: Integrierte Module (direkter Zugriff über ctx.libs ohne Import) und Externe Module (Laden bei Bedarf über ctx.importAsync() oder ctx.requireAsync()).


#Integrierte Module - ctx.libs (Kein Import erforderlich)

RunJS enthält gängige Bibliotheken, auf die direkt über ctx.libs zugegriffen werden kann. Sie müssen diese nicht per import oder asynchron laden.

EigenschaftBeschreibung
ctx.libs.ReactReact-Kern, verwendet für JSX und Hooks
ctx.libs.ReactDOMReactDOM (kann für createRoot etc. verwendet werden)
ctx.libs.antdAnt Design Komponenten-Bibliothek
ctx.libs.antdIconsAnt Design Icons
ctx.libs.mathMath.js: Mathematische Ausdrücke, Matrix-Operationen etc.
ctx.libs.formulaFormula.js: Excel-ähnliche Formeln (SUM, AVERAGE etc.)

#Beispiel: React und antd

const { Button } = ctx.libs.antd;

ctx.render(<Button>Klicken</Button>);

#Beispiel: ctx.libs.math

const result = ctx.libs.math.evaluate('2 + 3 * 4');
// Ergebnis === 14

#Beispiel: ctx.libs.formula

const values = [1, 2, 3, 4];
const sum = ctx.libs.formula.SUM(values);
const avg = ctx.libs.formula.AVERAGE(values);

#Externe Module

Wenn Sie Bibliotheken von Drittanbietern benötigen, wählen Sie die Lademethode basierend auf dem Modulformat:

  • ESM-Module → Verwenden Sie ctx.importAsync()
  • UMD/AMD-Module → Verwenden Sie ctx.requireAsync()

#Importieren von ESM-Modulen

Verwenden Sie ctx.importAsync(), um ESM-Module dynamisch über eine URL zu laden. Dies eignet sich für Szenarien wie JS-Blöcke, JS-Felder und JS-Aktionen.

importAsync<T = any>(url: string): Promise<T>;
  • url: Die Adresse des ESM-Moduls. Unterstützt Kurzschreibweisen wie <Paket>@<Version> oder Unterpfade wie <Paket>@<Version>/<Dateipfad> (z. B. vue@3.4.0, lodash@4/lodash.js). Diesen wird das konfigurierte CDN-Präfix vorangestellt. Vollständige URLs werden ebenfalls unterstützt.
  • Rückgabewert: Das aufgelöste Modul-Namespace-Objekt.

#Standardmäßig https://esm.sh

Wenn nichts anderes konfiguriert ist, verwenden Kurzformen https://esm.sh als CDN-Präfix. Beispiel:

const Vue = await ctx.importAsync('vue@3.4.0');
// Entspricht dem Laden von https://esm.sh/vue@3.4.0

#Selbstgehosteter esm.sh-Dienst

Wenn Sie ein internes Netzwerk oder ein eigenes CDN benötigen, können Sie einen Dienst bereitstellen, der mit dem esm.sh-Protokoll kompatibel ist, und diesen über Umgebungsvariablen angeben:

  • ESM_CDN_BASE_URL: Die Basis-URL für das ESM-CDN (Standard: https://esm.sh)
  • ESM_CDN_SUFFIX: Optionales Suffix (z. B. /+esm für jsDelivr)

Informationen zum Selbsthosten finden Sie unter: https://github.com/nocobase/esm-server


#Importieren von UMD/AMD-Modulen

Verwenden Sie ctx.requireAsync(), um UMD/AMD-Module oder Skripte, die sich an das globale Objekt binden, asynchron zu laden.

requireAsync<T = any>(url: string): Promise<T>;
  • url: Unterstützt zwei Formen:
    • Kurzpfad: <Paket>@<Version>/<Dateipfad>, ähnlich wie bei ctx.importAsync(), aufgelöst nach der aktuellen ESM-CDN-Konfiguration. Bei der Auflösung wird ?raw angehängt, um die Rohdatei direkt anzufordern (meist ein UMD-Build). Beispielsweise fordert echarts@5/dist/echarts.min.js tatsächlich https://esm.sh/echarts@5/dist/echarts.min.js?raw an (bei Verwendung des Standard-esm.sh).
    • Vollständige URL: Jede vollständige CDN-Adresse (z. B. https://cdn.jsdelivr.net/npm/xxx).
  • Rückgabewert: Das geladene Bibliotheks-Objekt (die genaue Form hängt davon ab, wie die Bibliothek ihren Inhalt exportiert).

Nach dem Laden binden sich viele UMD-Bibliotheken an das globale Objekt (z. B. window.xxx). Sie können diese wie in der Dokumentation der jeweiligen Bibliothek beschrieben verwenden.

Beispiel

// Kurzpfad (aufgelöst über esm.sh als ...?raw)
const echarts = await ctx.requireAsync('echarts@5/dist/echarts.min.js');

// Vollständige URL
const dayjs = await ctx.requireAsync('https://cdn.jsdelivr.net/npm/dayjs@1/dayjs.min.js');

Hinweis: Wenn eine Bibliothek eine ESM-Version anbietet, sollten Sie bevorzugt ctx.importAsync() verwenden, um eine bessere Modulsemantik und Tree-Shaking zu erhalten.