Ce document a été traduit par IA. Pour des informations précises, veuillez consulter la version anglaise.
ctx.importAsync()
Chargez dynamiquement des modules ESM ou du CSS via une URL, applicable à divers scénarios RunJS. Utilisez ctx.importAsync() lorsque des bibliothèques ESM tierces sont requises, et ctx.requireAsync() pour les bibliothèques UMD/AMD. Passer une adresse .css chargera et injectera les styles dans la page.
Cas d'utilisation
Définition du type
Paramètres
Valeur de retour
- Une Promise qui se résout en l'objet d'espace de noms (namespace) du module.
Description du format d'URL
- ESM et CSS : En plus des modules ESM, le chargement de CSS est également pris en charge (passez une URL
.csspour le charger et l'injecter dans la page). - Format abrégé : Par défaut, https://esm.sh est utilisé comme préfixe CDN s'il n'est pas configuré. Par exemple,
vue@3.4.0appelle réellementhttps://esm.sh/vue@3.4.0. - ?deps : Les bibliothèques qui dépendent de React (comme
@dnd-kit/core,react-big-calendar) doivent ajouter?deps=react@18.2.0,react-dom@18.2.0pour éviter les conflits avec l'instance React de la page, ce qui pourrait entraîner des erreurs "Invalid hook call". - CDN auto-hébergé : Vous pouvez spécifier un réseau interne ou un service auto-hébergé via des variables d'environnement :
- ESM_CDN_BASE_URL : L'URL de base pour le CDN ESM (par défaut
https://esm.sh). - ESM_CDN_SUFFIX : Suffixe optionnel (ex :
/+esmpour jsDelivr). - Pour les services auto-hébergés, consultez : nocobase/esm-server
- ESM_CDN_BASE_URL : L'URL de base pour le CDN ESM (par défaut
Différence avec ctx.requireAsync()
- ctx.importAsync() : Charge des modules ESM et renvoie l'espace de noms du module. Adapté aux bibliothèques modernes (builds ESM comme Vue, dayjs, etc.).
- ctx.requireAsync() : Charge des modules UMD/AMD ou des scripts qui s'attachent à la portée globale. Souvent utilisé pour des bibliothèques UMD comme ECharts ou FullCalendar. Si une bibliothèque fournit à la fois ESM et UMD,
ctx.importAsync()est préférable.
Exemples
Usage de base
Démontre l'utilisation la plus simple du chargement dynamique de modules ESM et de CSS par nom de paquet ou URL complète.
Exemple ECharts
Utilisez ECharts pour dessiner un graphique d'aperçu des ventes avec des diagrammes en barres et des courbes.
Exemple Tabulator
Démontre le rendu d'un tableau de données avec pagination et événements de clic sur les lignes dans un bloc à l'aide de Tabulator.
Exemple FullCalendar (ESM)
Montre comment charger FullCalendar et ses plugins via ESM et rendre un calendrier de base en vue mensuelle.
Exemple de glisser-déposer simple dnd-kit
Utilise @dnd-kit/core pour implémenter un exemple minimal de déplacement d'une boîte (Box) vers une zone cible dans un bloc.
Cet exemple s'appuie uniquement sur @dnd-kit/core pour déclencher une notification lorsqu'une boîte est déposée dans une zone spécifique, illustrant l'interaction de glisser-déposer la plus simple combinant ctx.importAsync et React dans RunJS.
Exemple de liste triable dnd-kit
Implémente une liste triable verticalement en utilisant le core, le module sortable et les utilitaires de dnd-kit.
Cet exemple utilise @dnd-kit/core, @dnd-kit/sortable et @dnd-kit/utilities pour implémenter une liste triable qui met à jour son ordre et affiche un message "Liste réordonnée" après le glissement.
Exemple react-big-calendar
Affiche un composant de calendrier prenant en charge l'affichage d'événements dans le bloc actuel en utilisant react-big-calendar et date-fns pour la localisation.
Exemple frappe-gantt
Utilise frappe-gantt pour afficher une vue de diagramme de Gantt montrant les heures de début/fin des tâches et leur progression.
Exemple @asseinfo/react-kanban
Utilise @asseinfo/react-kanban pour afficher un tableau Kanban de base avec des colonnes comme Backlog et Doing dans un bloc.
Remarques
- Cette fonctionnalité dépend d'un réseau externe ou d'un CDN. Dans les environnements réseau internes, ESM_CDN_BASE_URL doit être configuré pour pointer vers un service auto-hébergé.
- Lorsqu'une bibliothèque fournit à la fois ESM et UMD, préférez
ctx.importAsync()pour une meilleure sémantique de module. - Pour les bibliothèques dépendant de React, assurez-vous d'ajouter
?deps=react@18.2.0,react-dom@18.2.0. La version doit correspondre à la version React utilisée par la page, sinon une erreur "Invalid hook call" peut survenir.
Liens connexes
- ctx.requireAsync() : Charge des scripts UMD/AMD ou attachés globalement, adapté aux bibliothèques UMD comme ECharts et FullCalendar.
- ctx.render() : Rendu du contenu dans un conteneur.

