logologo
Démarrer
Manuel
Développement
Plugins
API
Accueil
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
Démarrer
Manuel
Développement
Plugins
API
Accueil
logologo
Présentation de RunJS
Importation de modules
Rendu dans le conteneur

Variables globales

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 PagePrésentation de RunJS
Next PageRendu dans le conteneur
Avis de traduction IA

Ce document a été traduit par IA. Pour des informations précises, veuillez consulter la version anglaise.

#Importation de modules

Dans RunJS, vous pouvez utiliser deux types de modules : les modules intégrés (utilisés directement via ctx.libs, sans import) et les modules externes (chargés à la demande via ctx.importAsync() ou ctx.requireAsync()).


#Modules intégrés - ctx.libs (aucun import requis)

RunJS inclut des bibliothèques courantes accessibles directement via ctx.libs. Vous n'avez pas besoin d'utiliser import ou de chargement asynchrone pour celles-ci.

PropriétéDescription
ctx.libs.ReactReact lui-même, utilisé pour le JSX et les Hooks
ctx.libs.ReactDOMReactDOM (peut être utilisé avec createRoot, etc.)
ctx.libs.antdBibliothèque de composants Ant Design
ctx.libs.antdIconsIcônes Ant Design
ctx.libs.mathMath.js : expressions mathématiques, opérations matricielles, etc.
ctx.libs.formulaFormula.js : formules de type Excel (SUM, AVERAGE, etc.)

#Exemple : React et antd

const { Button } = ctx.libs.antd;

ctx.render(<Button>Cliquez ici</Button>);

#Exemple : ctx.libs.math

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

#Exemple : ctx.libs.formula

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

#Modules externes

Lorsque vous avez besoin de bibliothèques tierces, choisissez la méthode de chargement en fonction du format du module :

  • Modules ESM → Utilisez ctx.importAsync()
  • Modules UMD/AMD → Utilisez ctx.requireAsync()

#Importer des modules ESM

Utilisez ctx.importAsync() pour charger dynamiquement des modules ESM par URL. Cela convient aux blocs JS, aux champs JS, aux actions JS, etc.

importAsync<T = any>(url: string): Promise<T>;
  • url : Adresse du module ESM. Prend en charge les formats abrégés comme <nom-du-paquet>@<version> ou des sous-chemins comme <nom-du-paquet>@<version>/<chemin-du-fichier> (ex : vue@3.4.0, lodash@4/lodash.js). Le préfixe CDN configuré sera ajouté automatiquement. Les URLs complètes sont également prises en charge.
  • Retourne : L'objet d'espace de noms (namespace) du module résolu.

#Par défaut : https://esm.sh

Si aucune configuration n'est définie, les formes abrégées utiliseront https://esm.sh comme préfixe CDN. Par exemple :

const Vue = await ctx.importAsync('vue@3.4.0');
// Équivalent au chargement depuis https://esm.sh/vue@3.4.0

#Service esm.sh auto-hébergé

Si vous avez besoin d'un réseau interne ou d'un CDN auto-hébergé, vous pouvez déployer un service compatible avec le protocole esm.sh et le spécifier via des variables d'environnement :

  • ESM_CDN_BASE_URL : Adresse de base du CDN ESM (par défaut https://esm.sh)
  • ESM_CDN_SUFFIX : Suffixe optionnel (ex : /+esm pour jsDelivr)

Pour l'auto-hébergement, reportez-vous à : https://github.com/nocobase/esm-server


#Importer des modules UMD/AMD

Utilisez ctx.requireAsync() pour charger de manière asynchrone des modules UMD/AMD ou des scripts attachés à l'objet global via une URL.

requireAsync<T = any>(url: string): Promise<T>;
  • url : Prend en charge deux formes :
    • Chemin abrégé : <nom-du-paquet>@<version>/<chemin-du-fichier>, identique à ctx.importAsync(), résolu selon la configuration actuelle du CDN ESM. Lors de la résolution, ?raw est ajouté pour demander directement le fichier brut (généralement un build UMD). Par exemple, echarts@5/dist/echarts.min.js demande en réalité https://esm.sh/echarts@5/dist/echarts.min.js?raw (lorsque esm.sh est utilisé par défaut).
    • URL complète : Toute adresse CDN complète (ex : https://cdn.jsdelivr.net/npm/xxx).
  • Retourne : L'objet de la bibliothèque chargée (la forme spécifique dépend de la manière dont la bibliothèque exporte son contenu).

Après le chargement, de nombreuses bibliothèques UMD s'attachent à l'objet global (ex : window.xxx). Utilisez-les conformément à la documentation de la bibliothèque.

Exemple

// Chemin abrégé (résolu via esm.sh avec ...?raw)
const echarts = await ctx.requireAsync('echarts@5/dist/echarts.min.js');

// URL complète
const dayjs = await ctx.requireAsync('https://cdn.jsdelivr.net/npm/dayjs@1/dayjs.min.js');

Remarque : Si une bibliothèque fournit une version ESM, utilisez de préférence ctx.importAsync() pour bénéficier d'une meilleure sémantique de module et du Tree-shaking.