À propos du projet
Monaco Editor est l'éditeur de code complet de VS Code, conditionné sous forme de bibliothèque s'exécutant dans le navigateur. Il est publié sur npm sous le nom `monaco-editor` et inclut un build ESM (compatible avec les bundlers tels que webpack) ainsi qu'un build AMD déprécié, conservé pour la compatibilité ascendante. La surface publique versionnée est décrite dans `monaco.d.ts` ; tout le reste est considéré comme privé et peut changer entre les versions.
Concepts clés :
- Les modèles représentent le contenu ouvert : ils contiennent le texte, déterminent le langage et suivent l'historique des modifications. Un modèle n'a pas nécessairement besoin de correspondre à un fichier réel.
- Les URI identifient les modèles, donc deux modèles ne peuvent pas partager le même URI. Les modèles créés sans URI se voient attribuer un URI généré de type `inmemory://model/N`. Le choix d'URI significatifs est important car certaines fonctionnalités intelligentes (par exemple la résolution des imports TypeScript ou la sélection du schéma JSON) dépendent de l'URI du fichier.
- Les éditeurs sont les vues destinées à l'utilisateur attachées au DOM ; ils affichent un modèle, gèrent l'état de la vue et exécutent des actions ou des commandes.
- Les fournisseurs apportent des fonctionnalités d'éditeur intelligentes telles que l'autocomplétion et les informations au survol, correspondant souvent aux capacités du Language Server Protocol.
- De nombreux objets exposent `.dispose()` pour le nettoyage ; la destruction d'un modèle libère son URI, et les éditeurs doivent être détruits pour libérer les ressources et les écouteurs.
La localisation est gérée en chargeant le script nls correspondant (par exemple `esm/nls.messages.de.js`) avant le script principal de l'éditeur. Le README renvoie vers un bac à sable interactif pour essayer les fonctionnalités, tester les versions et créer des reproductions minimales, ainsi que vers des exemples d'intégration complets, la documentation de l'API, un guide d'accessibilité pour les intégrateurs et un bac à sable Monarch pour créer des tokenizers pour de nouveaux langages.
La FAQ précise que Monaco est généré à partir des sources de VS Code avec des shims pour qu'il puisse s'exécuter dans un navigateur, que sa version ne suit pas celle de VS Code, et que les extensions VS Code ne fonctionnent généralement pas avec lui, sauf si elles sont entièrement basées sur LSP avec un serveur de langage JavaScript. Les services de langage utilisent des web workers ; les pages chargées via `file://` ne peuvent pas créer de workers, donc l'éditeur doit être servi via http ou https. Les navigateurs mobiles et les frameworks d'applications web mobiles ne sont pas pris en charge, et les grammaires TextMate ne sont pas intégrées nativement (un projet communautaire distinct combine monaco-editor avec vscode-oniguruma et vscode-textmate). Le projet est sous licence MIT et accueille favorablement les contributions communautaires.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.