Vue3 custom element into Vue2 app using external framework(使用外部框架将Vue3自定义元素添加到Vue2应用程序中)
问题描述
我有一个用Vue2编写的应用程序,它还没有真正准备好升级到Vue3。但是,我想开始在Vue3中编写一个组件库,并将组件导入回Vue2中,最终在它准备好后进行升级。
Vue 3.2+引入了defineCustomElement
,它工作得很好,但一旦我在Vue3环境(例如Quasar)中使用附加到Vue实例的框架,它就开始在Vue2应用程序中引发错误,可能是因为defineCustomElement(SomeComponent)
的结果试图使用应该附加到应用程序的框架中的内容。
我想过扩展HTMLElement并在connectedCallback
上挂载应用程序,但后来我失去了反应性,不得不手动处理所有道具/发射/..如下所示:
所以最后的问题是--有没有可能以某种方式将defineCustomElement
与附加到应用程序的框架结合起来?
推荐答案
所以,经过一番挖掘,我得出了以下结论。
首先,让我们创建一个使用外部库(在我的例子中是Quasar)的组件
然后我们准备要构建的组件(这就是魔术发生的地方)
现在,我们需要将其构建为库(我使用的是vite,但也应该适用于vue-cli)
现在我们需要将构建的库导入到包含Vue3的上下文中,在我的例子中index.html
运行良好。
现在,我们已经准备好在我们的Vue2(或任何其他)代码库中使用我们的组件,方法与我们习惯的方式相同,只需进行一些微小的更改,请检查下面的注释。
现在,您可以在Vue2中使用Vue3组件:)
这篇关于使用外部框架将Vue3自定义元素添加到Vue2应用程序中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!