【问题标题】:VueJS + VUEX + Firebase: Where To Hook Up Firebase?VueJS + VueX + Firebase:在哪里连接 Firebase?
【发布时间】:2017-11-05 05:30:22
【问题描述】:

我想将 Firebase 集成到我的 Vue.JS 应用中。

我想知道在哪里将 references 放到 Firebase。

【问题讨论】:

  • 我建议你检查这个插件:github.com/vuejs/vuefire
  • 我不想使用这个插件......它不适用于 Vuex 并且 Vuexfire 不适用于 Firebase 4! :(

标签: firebase vue.js vuex


【解决方案1】:

将firebase作为项目cd中的依赖项安装到项目目录中并在命令行中运行以下命令

npm install --save firebase

现在在你的 main.js 文件中添加这个

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)
}) 
  • 您还可以在外部 js 文件中添加您的 firebase 凭据,并将其导入 main.js 文件,如下所示:

firebase-config.js

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

现在在您的 main.js 中执行以下操作

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)
}) 
  • 将 firebase 添加到 Vue.prototype 允许通过使用 this.$firebase 在您的 vue 组件中使用 firebase

  • 如果您不希望这种行为,您可以使用 firebase.initializeApp(config); 初始化 firebase

  • 现在来到您的 vuex 商店,您只需导入 firebase 模块,如下所示

    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()
            }
        }
    });  
    

感谢 @umang 建议将 firebase 全局命名空间添加到 Vue.prototype 而不是 firebase 应用实例。

【讨论】:

  • 对此Vue.prototype.$firebase = firebase.initializeApp(config);投了赞成票。
  • 一样!我真的很喜欢它如何将它暴露给所有组件以便于使用。
  • 在保存操作之前,您会在哪里进行任何验证?在突变?组件方法还是动作本身?
  • @Notflip 无法完全理解你的问题...你能不能更具体一点
  • 这几乎是正确的答案。正如@jeand'arme 指出的,您无法访问firebase.auth.blahfirebase.firestore.blah,但可以 访问firebase.auth().blahfirebase.firestore().blah。它可以用firebase.initializeApp(config); Vue.prototype.$firebase = firebase; 修复你仍在初始化firebase,但存储的是类而不是实例(我不知道这个的JS术语)
猜你喜欢
  • 2017-01-17
  • 2020-04-03
  • 2019-05-03
  • 2018-01-09
  • 2014-07-11
  • 2018-06-29
  • 2018-07-01
  • 2019-05-03
相关资源
最近更新 更多