Nous essayons de mettre à jour une bibliothèque et la nouvelle version nécessite Vue 3 au lieu de Vue 2, à savoir tinymce-vue. Malheureusement, il s'agit d'un projet d'entreprise utilisant bootstrap-vue, qui n'est pas encore totalement compatible avec Vue 3 (bootstrap-vue3 n'est pas encore prêt pour la production et nous utilisons certains composants qui n'ont pas encore été migrés).
La tentative principale est de migrer l'application complète vers Vue 3. Cependant, il ne permet pas d'utiliser les composants Bootstrap dans Vue 3, ou si vous utilisez le mode de compatibilité, une partie de l'application fonctionne, mais les parties qui nécessitent ce composant n'apparaissent pas/ne fonctionnent pas, ou d'autres parties du composant qui nécessitent Vue 3. sont brisé. Existe-t-il un moyen d'assurer une compatibilité spécifique à la bibliothèque, ou dans ce cas, quelle est l'approche recommandée lorsque deux bibliothèques nécessitent deux versions différentes de Vue dans le même composant ?
Je ne sais pas si cette question doit être posée différemment, c'est ma première question dans StackOverflow, donc si je dois la reformuler ou fournir plus de détails, veuillez me le faire savoir.
Le problème est qu'il est difficile voire impossible que les applications Vue 2 et 3 cohabitent dans un même projet car elles dépendent du même nom mais de versions différentes
vue
包。即使可以使用不同名称的vue
包别名或使用模块化 Vue(import Vue from 'vue'
)作为一个版本和 Vue CDN (window. Vue
) Pour une version en code 1ère partie, un autre problème à résoudre C'est le Bibliothèque Vue qui nécessite l'utilisation d'une version spécifique de Vue.Cela nécessite de créer et de regrouper la sous-application en utilisant sa version et sa bibliothèque Vue préférées, ce qui est très proche du concept d'application micro-frontend.
Supposons que vous disposiez d'une sous-application Vue 3 qui utilise une bibliothèque spécifique à Vue 3 (tinymce-vue) et est écrite spécifiquement pour exposer toutes les API publiques afin de communiquer avec le monde extérieur :
Les composants wrapper de Vue 2 agissent comme un pont entre les sous-applications Vue 3 et le reste de l'application Vue 2 :
Si les wrappers et sous-applications nécessitent une synchronisation supplémentaire basée sur des points spécifiques, tels que
provide
/inject
, des références de modèles, etc., cela doit être implémenté concrètement. À cet égard, ce n'est pas différent de l'adaptateur Vue 3->Vue 2 ou des adaptateurs impliquant d'autres frameworks (Angular, React).