Javascript Vue与所有(或大多数)组件共享外部库

Javascript Vue与所有(或大多数)组件共享外部库,javascript,vue.js,vuejs2,Javascript,Vue.js,Vuejs2,嗨,我正在和Firebase一起使用Vue 在我的App.vue我的主要入口点中,我正在初始化Firebase库,如下所示 import Firebase from 'firebase'; export default { data() { return { firebase: null } }, created() { this.firebase = Firebase.initializeApp(

嗨,我正在和Firebase一起使用Vue

在我的App.vue我的主要入口点中,我正在初始化Firebase库,如下所示

import Firebase from 'firebase';

export default {
    data() {
        return {
            firebase: null
        }
    },
    created() {
        this.firebase = Firebase.initializeApp({
            apiKey: "123456789",
            projectId: "projectid-1234",
        });
    }
}
然后我将它作为道具传递给其他需要它的组件

<template>
    <div id="app" class="container">
        <create-user-form :firebase="firebase"></create-user-form>
        <users :firebase="firebase"></users>
    </div>
</template>

问题是我的组件必须依赖Firebase插件,其深度为2或3级。我需要继续开着这个Firebase道具吗?我想知道是否有更有效的方法?

您可以使用实例属性:


您可以使用实例属性:

import Firebase from 'firebase';

export default {
    props: ['firebase'],
    methods: {
        createUser() {
                this.firebase.database().ref('users')....
            }
        }
    },
    mounted() {
        this.firebase.database().ref('users')....
    }
}
// In your main js file
Vue.prototype.$firebase = Firebase.initializeApp({
  apiKey: "123456789",
  projectId: "projectid-1234",
})

new Vue({
   //...
})

// In your child component
//...
this.$firebase.database().ref('users')
//...