VueJS + VUEX + Firebase: Where To Hook Up Firebase?

后端 未结 1 556
温柔的废话
温柔的废话 2020-12-24 14:54

I would like to integrate Firebase in my Vue.JS app.

I wonder WHERE to put the references to Firebase.

相关标签:
1条回答
  • 2020-12-24 15:43

    To install firebase as a dependency in your project cd into your project directory and run the following command in the command line

    npm install --save firebase
    

    Now in your main.js file add this

    import Vue from 'vue'
    import App from './App.vue'
    import * as firebase from 'firebase'
    import { store } from './store/store'
    
    
    const config = {
        apiKey: "xxxxxxx",
        authDomain: "xxxxxxx",
        databaseURL: "xxxxxxx",
        storageBucket: "xxxxxxxx",
        messagingSenderId: "xxxxxxx"
      };
    
    firebase.initializeApp(config);
    Vue.prototype.$firebase = firebase;
    
    new Vue({
      el: '#app',
      store,
      render: h => h(App)
    }) 
    
    • you can also add your firebase credentials in an external js file and import it in the main.js file as follows:

    firebase-config.js

    export const config = {
        apiKey: "xxxxxxx",
        authDomain: "xxxxxxx",
        databaseURL: "xxxxxxx",
        storageBucket: "xxxxxxxx",
        messagingSenderId: "xxxxxxx"
      }; 
    

    Now in your main.js do as follows

    import Vue from 'vue'
    import App from './App.vue'
    import * as firebase from 'firebase'
    import { store } from './store/store'
    import { config } from './firebase-config'
    
    firebase.initializeApp(config);
    Vue.prototype.$firebase = firebase;
    
    new Vue({
      el: '#app',
      store,
      render: h => h(App)
    }) 
    
    • adding firebase to the Vue.prototype allows usage of firebase in your vue components by using this.$firebase

    • if you don't want this behavior you can just initialize firebase using firebase.initializeApp(config);

    • now coming to your vuex store you can just import the firebase module as below

      import Vue from 'vue'
      import Vuex from 'vuex'
      import * as firebase from 'firebase'
      
      Vue.use(Vuex);
      
      export const store = new Vuex.Store({
          state:{},
          mutations:{},
          actions:{
              myFirebaseAction: ({commit}) => {
                  //you can use firebase like this
                  var ref = firebase.database().ref()
              }
          }
      });  
      

    Credits to @umang for suggesting to add the firebase global namespace to the Vue.prototype instead of the firebase app instance.

    0 讨论(0)
提交回复
热议问题