将 Vue 单个组件导出为 Web 组件

Posted

技术标签:

【中文标题】将 Vue 单个组件导出为 Web 组件【英文标题】:Exporting Vue individual components as Web Components 【发布时间】:2018-11-11 12:25:43 【问题描述】:

我有一个 Vue 应用程序,我在过去几天整合了一组组件,这些组件将嵌入到另一个应用程序中; Vue 应用程序用于快速开发并充当组件的测试工具。

我现在已经开始将这些组件添加到它们所针对的主要非 Vue 应用程序中。我知道我可以使用npm run build -- --target wc 构建 Web 组件,但我不想将整个测试工具应用程序构建为单个组件;相反,我想将应用程序中的单个 Vue 组件构建成单独的可再分发 Web 组件。

我怎样才能做到这一点?

【问题讨论】:

【参考方案1】:

现在,答案是使用官方的@vue/web-component-wrapper库。

【讨论】:

【参考方案2】:

使用 @vue/cli-service-global(目前处于测试阶段),您确实可以从您的 Vue SFC 构建 Web Components。

您可以通过将组件文件指定为glob in the entry CLI argument 来跳过您的(“测试工具”)应用:

$ vue-cli-service build --target wc --name foo 'src/components/*.vue'

但是,这仍然会构建一个包含所有自定义元素的 JS 文件。

您可以通过使用Async Web Components 目标来进一步解耦 中的这些单独元素(即wc-async 而不是wc):

$ vue-cli-service build --target wc-async --name foo 'src/components/*.vue'

然后您将生成的foo.js 加载程序文件作为<script> 包含在您的html 文件中。它将定义您的所有自定义元素,但不会在它们出现在 DOM 之前加载它们。

【讨论】:

运行命令 'vue-cli-service build --target wc --name my-custom-element 'src 后出现此错误'找不到模块'@vue/cli-plugin-babel' /components/*.vue'。我正在使用最新版本的 vue-cli。 @MangeshDaundkar 请随时打开一个新问题,并提供您问题的具体细节。

以上是关于将 Vue 单个组件导出为 Web 组件的主要内容,如果未能解决你的问题,请参考以下文章

如何将类型从 Vue3 组件导出到全局范围?

vue.js 2 - 将单个文件组件的 html 片段提取到独立文件中

Vue 将组件从单个 .js 文件拆分到多个文件中

如何在单个文件 vue 组件中的初始化时将道具传递给 vue 组件(vue-loader 中的依赖注入)?

首页商品列表和单个商品组件封装

vue单个组件命名标签无法引用