Installation et utilisation de base
Univer repose sur une architecture à base de plugins afin de fournir aux développeurs un framework flexible et extensible pour les applications de documents électroniques. Cette architecture permet à Univer d’intégrer facilement différents modules fonctionnels afin de répondre aux besoins de chaque utilisateur. Elle augmente toutefois la complexité de l’application, en particulier pour les développeurs qui découvrent Univer.
C’est pourquoi Univer propose deux méthodes pour faciliter une intégration et une prise en main rapides : le mode plugin et le mode prédéfini. Un préréglage est en fait un ensemble de plugins préconfigurés. En l’absence d’extensions complexes, les deux modes offrent donc les mêmes fonctionnalités.
Attention
- Versions cohérentes des dépendances : que vous utilisiez le mode prédéfini ou le mode plugin, toutes les dépendances doivent avoir le même numéro de version.
- Prudence lors de l’association de plugins et de préréglages : si un plugin est déjà inclus dans un préréglage, ne l’importez pas séparément lorsque vous utilisez ce préréglage. Cela pourrait entraîner des conflits entre plugins ou des dysfonctionnements.
Voici les différences entre le mode prédéfini et le mode plugin :
| Mode plugin | Mode prédéfini |
|---|---|
| Nécessite l’importation manuelle des packages de façade correspondants | Ne nécessite pas l’importation manuelle des packages de façade |
| Nécessite de respecter l’ordre d’enregistrement des plugins offrant les mêmes fonctionnalités | Ne nécessite pas de tenir compte de l’ordre d’enregistrement des fonctionnalités incluses dans les préréglages |
| Permet le chargement différé à la demande | Charge les préréglages configurés de manière synchrone pendant l’initialisation |
Univer propose deux modes d’intégration : le mode prédéfini et le mode plugin. Le mode prédéfini simplifie la configuration grâce à des ensembles de plugins préconfigurés. Pour une personnalisation ou des extensions approfondies, nous recommandons le mode plugin, qui permet de combiner et de configurer les plugins individuellement.
Configuration en mode plugin
Univer fournit un ensemble de fonctionnalités sous forme de plugins. Outre certains plugins principaux indispensables au produit, vous pouvez ajouter les autres plugins de façon sélective selon vos besoins. Nous prendrons ici l’application Univer Docs la plus simple pour illustrer l’installation et l’association manuelles de plugins.
Contrairement au mode prédéfini, le mode plugin n’inclut pas l’API Facade1 par défaut. Les exemples ci-dessous l’utilisent : importez donc les packages de façade correspondants avant de créer l’instance de l’API.
Utilisation d’un gestionnaire de packages
Installation
Univer utilise React pour son interface et RxJS pour les flux de données ; il peut aussi être intégré à Vue ou Angular. Vérifiez que les peer dependencies2 react, react-dom et rxjs sont installées. La commande Yarn ci-dessous les inclut explicitement.
Conservez la même version pour tous les packages @univerjs/* et @univerjs-pro/*.
pnpm add @univerjs/core @univerjs/design @univerjs/docs @univerjs/docs-ui @univerjs/engine-formula @univerjs/engine-render @univerjs/uinpm install @univerjs/core @univerjs/design @univerjs/docs @univerjs/docs-ui @univerjs/engine-formula @univerjs/engine-render @univerjs/uiyarn add @univerjs/core @univerjs/design @univerjs/docs @univerjs/docs-ui @univerjs/engine-formula @univerjs/engine-render @univerjs/ui react react-dom rxjsbun add @univerjs/core @univerjs/design @univerjs/docs @univerjs/docs-ui @univerjs/engine-formula @univerjs/engine-render @univerjs/uiUtilisation
Créez le conteneur avant d’initialiser Univer et définissez une hauteur explicite :
<div id="app" style="height: 600px"></div>Importez les entrées facade utilisées ci-dessous avant d’appeler FUniver.newAPI(univer). Importez les CSS dans cet ordre : @univerjs/design, @univerjs/ui, puis ceux du produit.
Attention
- Tous les plugins n’incluent pas nécessairement des packages de façade, des packs de langue et des fichiers de style. Ce point est précisé dans la documentation de chaque fonctionnalité.
- L’ordre d’importation des fichiers de style est important. Veillez à importer les styles CSS de
@univerjs/designet de@univerjs/uiavant ceux des autres plugins.
Vous devez importer dans votre projet les fichiers de style d’Univer, les packs de langue et quelques plugins nécessaires :
TypeScriptimport { LocaleType, mergeLocales, Univer } from '@univerjs/core'import { FUniver } from '@univerjs/core/facade'import DesignEnUS from '@univerjs/design/locale/en-US'import { UniverDocsPlugin } from '@univerjs/docs'import { UniverDocsUIPlugin } from '@univerjs/docs-ui'import DocsUIEnUS from '@univerjs/docs-ui/locale/en-US'import { UniverFormulaEnginePlugin } from '@univerjs/engine-formula'import { UniverRenderEnginePlugin } from '@univerjs/engine-render'import { UniverUIPlugin } from '@univerjs/ui'import UIEnUS from '@univerjs/ui/locale/en-US'import '@univerjs/design/lib/index.css'import '@univerjs/ui/lib/index.css'import '@univerjs/docs-ui/lib/index.css'Importez les packages de façade utilisés dans l’exemple :
TypeScriptimport '@univerjs/engine-formula/facade'import '@univerjs/ui/facade'import '@univerjs/docs/facade'import '@univerjs/docs-ui/facade'Créez ensuite une instance d’Univer et enregistrez ces plugins :
TypeScriptconst univer = new Univer({ locale: LocaleType.EN_US, locales: { [LocaleType.EN_US]: mergeLocales( DesignEnUS, UIEnUS, DocsUIEnUS, ), },})univer.registerPlugin(UniverRenderEnginePlugin)univer.registerPlugin(UniverFormulaEnginePlugin)univer.registerPlugin(UniverUIPlugin, { container: 'app',})univer.registerPlugin(UniverDocsPlugin)univer.registerPlugin(UniverDocsUIPlugin)const univerAPI = FUniver.newAPI(univer)univerAPI.createDocument({})
Méthodes univer.registerPlugin et univer.registerPlugins
La méthode univer.registerPlugin sert à enregistrer un plugin dans l’instance Univer. Vous pouvez l’appeler après avoir créé l’instance Univer afin d’y enregistrer des plugins.
Vous pouvez enregistrer un plugin avec la méthode univer.registerPlugin(Plugin, options), où Plugin désigne le plugin à enregistrer et options les paramètres de configuration facultatifs, qui peuvent varier d’un plugin à l’autre.
Vous pouvez également utiliser univer.registerPlugins pour passer un tableau et enregistrer plusieurs plugins en une seule fois. Cette possibilité est utile lorsque vous devez centraliser la gestion des plugins.
univer.registerPlugins([ UniverRenderEnginePlugin, UniverFormulaEnginePlugin, [UniverUIPlugin, { container: 'app', }], UniverDocsPlugin, UniverDocsUIPlugin,])Chargement différé des plugins
L’un des principaux avantages du mode plugin est qu’il permet de contrôler plus précisément le moment où les plugins sont chargés. Une approche courante consiste à ne charger que les plugins indispensables lors de l’initialisation de l’application, puis à différer le chargement de certains plugins jusqu’à la fin du premier rendu.
// ...const univerAPI = FUniver.newAPI(univer)univerAPI.createDocument({})import('@univerjs/watermark').then(({ UniverWatermarkPlugin }) => { univer.registerPlugin(UniverWatermarkPlugin, { textWatermarkSettings: { content: 'Hello, Univer!', fontSize: 36, }, })})Importer depuis un CDN
Si vous ne souhaitez pas utiliser de gestionnaire de paquets ou voulez simplement essayer rapidement les fonctionnalités d’Univer, vous pouvez importer les ressources correspondantes via un CDN. Pour en savoir plus, consultez la page Utiliser Univer via un CDN.
Prise en charge mobile
Ces exemples nécessitent des paquets SDK exportant les plugins mobiles ci-dessous. Gardez toutes les dépendances @univerjs/* et @univerjs-pro/* à la même version.
1.0.0-rc.0 n’exporte pas UniverDocsMobileUIPlugin. Utilisez une version compilée incluant cette entrée mobile avant de suivre cet exemple.
Utilisez les plugins UI mobiles pour les commandes tactiles de Univer Docs.3 Choisissez le mode avant de créer l’éditeur.
Dans l’exemple en mode plugin ci-dessus, remplacez les imports et inscriptions UI suivants avant createUnit(). Ne les ajoutez pas à un éditeur de bureau déjà initialisé. Conservez les modèles, moteurs, traductions, CSS et imports Facade. Les classes sont des exports nommés du même point d’entrée du paquet.
import { UniverDocsMobileUIPlugin } from '@univerjs/docs-ui'import { UniverMobileUIPlugin } from '@univerjs/ui'univer.registerPlugin(UniverMobileUIPlugin, { container: 'app' })univer.registerPlugin(UniverDocsMobileUIPlugin)Actuellement, UniverSheetsCorePreset et UniverDocsCorePreset enregistrent des UI de bureau et ne proposent pas d’option mobile: true. Assemblez explicitement les plugins mobiles. Les ajouter après un preset de bureau ne remplace pas son UI.
Correspondance des plugins
Enregistrez uniquement les fonctionnalités utilisées, avec leurs modèles et dépendances. Un export UI mobile ne garantit pas des commandes identiques sur les deux interfaces. Les fonctionnalités Pro exigent toujours la licence correspondante. Pour les fonctionnalités nécessitant un backend, intégrez les modules correspondants du Univer Server SDK à votre application.
| Paquet | Inscription de bureau | Inscription mobile |
|---|---|---|
@univerjs/ui | UniverUIPlugin | UniverMobileUIPlugin |
@univerjs/docs-ui | UniverDocsUIPlugin | UniverDocsMobileUIPlugin |
@univerjs/drawing-ui | UniverDrawingUIPlugin | UniverDrawingMobileUIPlugin |
@univerjs/thread-comment-ui | UniverThreadCommentUIPlugin | UniverThreadCommentMobileUIPlugin |
@univerjs-pro/shape-editor-ui | UniverShapeEditorUIPlugin | UniverShapeEditorMobileUIPlugin |
@univerjs-pro/chart-ui | UniverChartUIPlugin | UniverChartMobileUIPlugin |
@univerjs-pro/exchange-client | UniverExchangeClientPlugin | UniverExchangeClientMobileUIPlugin |
@univerjs/docs-drawing-ui | UniverDocsDrawingUIPlugin | UniverDocsDrawingMobileUIPlugin |
@univerjs/docs-hyper-link-ui | UniverDocsHyperLinkUIPlugin | UniverDocsHyperLinkMobileUIPlugin |
@univerjs/docs-thread-comment-ui | UniverDocsThreadCommentUIPlugin | UniverDocsThreadCommentMobileUIPlugin |
@univerjs-pro/docs-callout-ui | UniverDocsCalloutUIPlugin | UniverDocsCalloutMobileUIPlugin |
@univerjs-pro/docs-chart-ui | UniverDocsChartUIPlugin | UniverDocsChartMobileUIPlugin |
@univerjs-pro/docs-code-ui | UniverDocsCodeUIPlugin | UniverDocsCodeMobileUIPlugin |
@univerjs-pro/docs-column-ui | UniverDocsColumnUIPlugin | UniverDocsColumnMobileUIPlugin |
@univerjs-pro/docs-formula-ui | UniverDocsFormulaUIPlugin | UniverDocsFormulaMobileUIPlugin |
@univerjs-pro/docs-latex-ui | UniverDocsLatexUIPlugin | UniverDocsLatexMobileUIPlugin |
@univerjs-pro/docs-list-ui | UniverDocsListUIPlugin | UniverDocsListMobileUIPlugin |
@univerjs-pro/docs-quote-ui | UniverDocsQuoteUIPlugin | UniverDocsQuoteMobileUIPlugin |
@univerjs-pro/docs-shape-ui | UniverDocsShapeUIPlugin | UniverDocsShapeMobileUIPlugin |
@univerjs-pro/docs-table-ui | UniverDocsTableUIPlugin | UniverDocsTableMobileUIPlugin |
Conteneur et interactions tactiles
Définissez une hauteur explicite et le viewport de la page. 100dvh suit la hauteur dynamique du viewport. Vérifiez le défilement, le zoom par pincement, la sélection de texte, le presse-papiers et le clavier virtuel sur les navigateurs mobiles ciblés. Réduire la largeur ne sélectionne pas les plugins mobiles.
UniverMobileUIPlugin utilise disableAutoFocus: true par défaut pour éviter que l’éditeur ne prenne automatiquement le focus à l’initialisation.
<meta name="viewport" content="width=device-width, initial-scale=1" /><div id="app" style="height: 100dvh"></div>Configurer Web SDK en mode prédéfini
Cette section présente brièvement comment créer rapidement une application Univer Docs en moins de vingt lignes de code.
Utiliser un gestionnaire de paquets
Si votre projet utilise déjà des outils de développement front-end modernes, l’intégration d’Univer est très simple. Pour créer des applications Univer, nous vous recommandons d’utiliser des outils de build qui prennent bien en charge les modules ES, comme Vite, esbuild ou Webpack 5. Si vous utilisez d’autres outils de build, tels que Webpack 4, une configuration supplémentaire peut être nécessaire.
Installation
Utilisez le gestionnaire de paquets de votre choix pour installer @univerjs/presets :
pnpm add @univerjs/presets @univerjs/preset-docs-corenpm install @univerjs/presets @univerjs/preset-docs-coreyarn add @univerjs/presets @univerjs/preset-docs-corebun add @univerjs/presets @univerjs/preset-docs-coreUtilisation
Si votre outil de build ne prend pas en charge le champ exports de package.json, ce qui est fréquent avec Webpack 4, vous devez remplacer manuellement les chemins mappés par les chemins réels.
Le code suivant permet de démarrer une application Univer Docs :
<div id="app" style="height: 600px"></div>import { UniverDocsCorePreset } from '@univerjs/preset-docs-core'import UniverPresetDocsCoreEnUS from '@univerjs/preset-docs-core/locales/en-US'import { createUniver, LocaleType, mergeLocales } from '@univerjs/presets'import '@univerjs/preset-docs-core/lib/index.css'const { univer, univerAPI } = createUniver({ locale: LocaleType.EN_US, locales: { [LocaleType.EN_US]: mergeLocales( UniverPresetDocsCoreEnUS, ), }, presets: [ UniverDocsCorePreset({ container: 'app', }), ],})univerAPI.createDocument({})L’objet univerAPI renvoyé ici est appelé API Facade d’Univer. Il permet d’utiliser de nombreuses fonctionnalités fournies par Univer.
Vous pouvez également importer UniverDocsCorePreset depuis @univerjs/presets/preset-docs-core, mais vous devez vous assurer que votre outil de build prend en charge le champ exports de package.json.
Méthode createUniver
La méthode createUniver accepte un objet de configuration qui contient les paramètres d’Univer, tels que la langue, le thème et les plugins. Elle renvoie un objet contenant l’instance d’Univer et l’instance de l’API Facade d’Univer.
Voici quelques propriétés de l’objet de configuration :
locale: environnement linguistique, qui peut être une valeur de l’énumérationLocaleType.locales: objet des paramètres régionaux, dont les clés sont les environnements linguistiques et les valeurs les objets de packs de langue.theme: objet de thème facultatif.presets: tableau des préréglages à enregistrer, commeUniverDocsCorePreset.plugins: tableau des plugins supplémentaires à enregistrer.
Lorsque vous utilisez un plugin qui n’est inclus dans aucun package de préréglage, ou que vous implémentez votre propre plugin, vous pouvez l’enregistrer avec la propriété plugins. Vous pouvez également choisir d’enregistrer des plugins à l’aide de la méthode univer.registerPlugin après avoir obtenu l’instance d’Univer.
Pour en savoir plus sur la méthode createUniver, consultez la page API Reference / createUniver.
Importer depuis un CDN
Si vous ne souhaitez pas utiliser de gestionnaire de paquets ou voulez simplement essayer rapidement les fonctionnalités d’Univer, vous pouvez importer les ressources correspondantes via un CDN. Pour en savoir plus, consultez la page Utiliser Univer via un CDN.
Autres versions
Outre les versions stables, Univer propose des canaux alpha / beta et nightly. Ces versions vous donnent un accès anticipé aux fonctionnalités les plus récentes qui n’ont pas encore été publiées officiellement. Gardez toutefois à l’esprit que davantage de fonctionnalités implique aussi davantage de risques. Ces versions peuvent contenir des bugs, des fonctionnalités incomplètes ou instables. Évitez autant que possible de les utiliser dans des environnements de production.
Version alpha / beta
Lorsque l’équipe de développement d’Univer termine une nouvelle fonctionnalité ou une modification importante, elle peut la publier en avant-première sur le canal alpha ou beta. Vous pouvez installer la version alpha / beta d’un package Univer à l’aide de la commande suivante :
pnpm add @univerjs/<package-name>@alpha # Alpha version
pnpm add @univerjs/<package-name>@beta # Beta versionnpm install @univerjs/<package-name>@alpha # Alpha version
npm install @univerjs/<package-name>@beta # Beta versionyarn add @univerjs/<package-name>@alpha # Alpha version
yarn add @univerjs/<package-name>@beta # Beta versionbun add @univerjs/<package-name>@alpha # Alpha version
bun add @univerjs/<package-name>@beta # Beta versionSi vous rencontrez un problème ou souhaitez faire part de vos commentaires lors de l’utilisation des versions alpha / beta, signalez-les à l’équipe de développement d’Univer via les issues GitHub.
Vos retours sur ces versions préliminaires sont les bienvenus.
Étapes suivantes
- Concepts de base - Découvrez les concepts de base d’Univer.
- Fonctionnalités - Découvrez les fonctionnalités d’Univer et apprenez à manipuler les données.
Footnotes
-
Facade est l’API applicative des plugins enregistrés. Importer une entrée Facade ajoute des méthodes API, mais n’enregistre pas le plugin fonctionnel lui-même. ↩
-
Les
peerDependenciessont des dépendances que l’application hôte doit fournir dans une version compatible. Elles permettent de partager des bibliothèques comme React avec Univer. ↩ -
Un plugin UI mobile sélectionne les commandes tactiles et les services mobiles à l’initialisation. Il ne détecte pas automatiquement l’appareil et ne change pas le mode d’une instance lors du redimensionnement. Pour changer de mode, conservez l’état du document, détruisez l’ancienne instance et initialisez les plugins choisis. ↩
Que pensez-vous de ce guide ?