javascript - 将组件注册到现有的 Vue.js 实例

标签 javascript vue.js vuejs2 vue-component

我是 Vue.js 新手。

我想按照这里的描述注册一个本地组件:

https://v2.vuejs.org/v2/guide/components.html#Local-Registration

唯一的问题是我需要将组件注册到现有 Vue 实例,而不是在创建新实例时,例如:

const app = new Vue({
    el: '#app'
});
    
app.component({
    'my-component': {
         template: '<div>A custom component!</div>'
    }
});

我已经为此尝试了 Vue.extend,但它不起作用。

编辑:

为什么我需要这个:

我正在创建一个包含该组件的第三方包。要安装此包的框架将已经包含 Vue.js 和一个 Vue 实例。因此,如果我在框架的 JS 之前包含我的包的 JS,那么它会告诉我 Vue 是未定义的,如果我在框架的 JS 之后包含我的包的 JS,那么它会给我组件错误,因为它必须在 Vue 实例化之前注册。

最佳答案

全局组件应该在新的实例构造之前声明。

Vue.component('my-component-a', {
  template: '<div>A custom component A!</div>'
});

Vue.component('my-component-b', {
  template: '<div>A custom component B!</div>'
});

const app1 = new Vue({
    el: '#app1',
    template: '<div><my-component-a /><my-component-b /><my-component-c /></div>',
    components: {
      MyComponentC: {
        template: '<div>A custom component C!</div>'
      }
    }
});

const app2 = new Vue({
    el: '#app2',
    template: '<div><my-component-b /><my-component-a /><my-component-c /></div>'
});
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.js"></script>
<div id="app1"></div>
<div id="app2"></div>

您无权从您的 app2 中访问 C 组件

关于javascript - 将组件注册到现有的 Vue.js 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45481822/

相关文章:

sass - 如何覆盖 vue 中的 materializecss sass 变量?

javascript - 如何仅在 Vue 中使用 CDN 脚本...无法导入组件?

vue.js - 定义和使用 Vue.config.keyCodes 时不能使用驼峰式属性名称

typescript - 在混合 ES/TS 项目中使用 Vue 组件

JavaScript:使选定文本框上的 'enter' 键执行与表单按钮相同的功能

用于点击特定文本链接的 Javascript 书签

javascript - 使用 templateUrl 更新指令元素值

javascript - 在循环结构中将元素附加到 DOM

javascript - bootstrap-vue tabs - 打开给定 url 中 anchor 的选项卡内容

ajax - Vue.js:如何传入不是父/访问 vue 方法的数据?