【问题标题】:Vue ignore custom component tagVue忽略自定义组件标签
【发布时间】:2017-12-15 21:05:22
【问题描述】:

在我的网站上,我使用的是 Google CSE(谷歌的自定义搜索引擎)。

这是我的 HTML:

<div id="app">
  ...
  <gcse:search></gcse:search>
  ...
</div>
<script type="text/javascript">
    new Vue({ el: '#app' })
</script>

如您所见,我在我的 vue 应用程序中放置了一个“gcse 输入”。

因此我收到警告:

[Vue 警告]:未知自定义元素:&lt;gcse:search&gt;

所以我的问题是如何停止尝试在 Vue.js 中初始化这个自定义组件?

提前致谢。

【问题讨论】:

  • 这是一个警告,而不是错误。
  • 好的。我应该担心这个吗?
  • Vue 可能会在下次渲染时彻底破坏您的自定义搜索引擎。

标签: javascript html vue.js vue-component


【解决方案1】:

Vue 认为您正在尝试加载一个名为 gcse:search 的 Vue 组件。

为了忽略这个标签,添加v-pre directive:

<gcse:search v-pre></gcse:search>

或者,您可以将 gcse:search 标签添加到 Vue 的 ignoredElements 列表中:

Vue.config.ignoredElements = ['gcse:search']

【讨论】:

  • 谢谢!我花了几个小时试图弄清楚如何让 Vue 不呈现我的 &lt;pre&gt;&lt;code&gt; 标记中的代码,该标记是显示示例代码的文档站点的一部分。
  • 根据我的测试,v-pre 完全忽略了该元素,因此您不能使用像v-bind 这样的反应性元素。另一方面,配置ignoredElements 会使 Vue 像往常一样渲染元素,只是不会抛出关于未知自定义元素的错误,因此您可以使用响应式数据和所有这些。
【解决方案2】:

除了thanksd的答案,你可以通过在ignoreElements属性中添加这些标签来忽略未知标签:

Vue.config.ignoredElements = ['gcse:search']

你也可以通过使用正则表达式而不是字符串来忽略这些标签:

Vue.config.ignoredElements = [/gcse:*/]

如果您想忽略更多具有特定模式的标签/组件,这非常有用。在这种情况下,您可以忽略所有以“gcse”开头的标签

【讨论】:

  • 正则表达式示例的建议:/^gcse:/
【解决方案3】:

Vue 3 中有所不同。

有两种配置方式。

1。如果您使用的是runtime compiler

请注意,如果您正在使用,这将不起作用 runtime-only build

const app = createApp({})
app.config.compilerOptions.isCustomElement = tag => tag.startsWith('ion-')

2。使用runtime-only build

这里你必须在webpack.config.js中为vue-loader添加一条规则

rules: [
  {
    test: /\.vue$/,
    use: 'vue-loader',
    options: {
      compilerOptions: {
        isCustomElement: tag => tag.startsWith('ion-')
      }
    }
  }
  // ...
]

额外

如果你使用laravel-mix,以前的方法对你不起作用,正确的方法是在laravel-mix的vue函数中传递options

mix.js('resources/js/app.js', 'public/js')
 .vue({
 options: {
  compilerOptions: {
   isCustomElement: tag => tag.startsWith('ion-')
  }
 }
})

参考资料:

  1. https://v3.vuejs.org/guide/migration/global-api.html#config-ignoredelements-is-now-config-compileroptions-iscustomelement
  2. https://v3.vuejs.org/guide/migration/custom-elements-interop.html#_2-x-syntax
  3. https://vue-loader.vuejs.org/guide/#manual-setup

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-22
    • 2018-12-28
    • 2016-03-06
    • 1970-01-01
    • 2021-02-27
    • 1970-01-01
    • 2021-07-26
    • 1970-01-01
    相关资源
    最近更新 更多