Wir versuchen, eine Bibliothek zu aktualisieren und die neue Version erfordert Vue 3 anstelle von Vue 2, nämlich tinymce-vue. Leider handelt es sich hierbei um ein Unternehmensprojekt, das Bootstrap-vue verwendet, das noch nicht vollständig mit Vue 3 kompatibel ist (Bootstrap-vue3 ist noch nicht produktionsbereit und wir verwenden einige Komponenten, die noch nicht migriert wurden).
Der Hauptversuch besteht darin, die komplette Anwendung auf Vue 3 zu migrieren. Allerdings ist die Verwendung von Bootstrap-Komponenten in Vue 3 nicht zulässig, oder wenn der Kompatibilitätsmodus verwendet wird, funktioniert ein Teil der App, aber die Teile, die diese Komponente erfordern, werden nicht angezeigt/funktionieren, oder andere Teile der Komponente, die Vue 3 erfordern sind kaputt. Gibt es eine Möglichkeit, bibliotheksspezifische Kompatibilität bereitzustellen, oder was ist in diesem Fall der empfohlene Ansatz, wenn zwei Bibliotheken zwei verschiedene Versionen von Vue in derselben Komponente erfordern?
Ich bin mir nicht sicher, ob diese Frage anders gestellt werden sollte. Dies ist meine erste Frage in StackOverflow. Wenn ich sie also umformulieren oder weitere Details angeben muss, lassen Sie es mich bitte wissen.
问题在于,Vue 2 和 3 应用程序很难甚至不可能在同一个项目中共存,因为它们依赖于同名但不同版本的
vue
包。即使可以使用不同名称的vue
包别名或使用模块化 Vue(import Vue from 'vue'
)作为一个版本和 Vue CDN (window. Vue
)对于第一方代码中的另一个版本,另一个需要解决的问题是Vue库需要使用特定的Vue版本。这需要使用其首选的 Vue 版本和库来构建和捆绑子应用程序,这与微前端应用程序的概念非常接近。
假设有一个 Vue 3 子应用程序使用 Vue 3 特定库 (tinymce-vue),并专门编写用于公开所有公共 API 以与外界通信:
Vue 2 包装组件充当 Vue 3 子应用程序和 Vue 2 应用程序其余部分之间的桥梁:
如果包装器和子应用程序需要根据特定点进行额外同步,例如
provide
/inject
、模板引用等,这个需要具体实现。在这一点上,它与 Vue 3->Vue 2 适配器或涉及其他框架(Angular、React)的适配器没有什么不同。