首页 > 解决方案 > 将js导入Vue项目

问题描述

我正在考虑使用 Vuefire 来更轻松地将 Firestore 与我的 Vue 项目集成。在阅读入门文档时,他们让您创建一个 db.js 文件,以便您可以“方便地”将其导入项目中的任何位置。

import firebase from 'firebase/app'
import 'firebase/firestore'

// Get a Firestore instance
export const db = firebase
  .initializeApp({ projectId: 'MY PROJECT ID' })
  .firestore()

// Export types that exists in Firestore
// This is not always necessary, but it's used in other examples
const { Timestamp, GeoPoint } = firebase.firestore
export { Timestamp, GeoPoint }

// if using Firebase JS SDK < 5.8.0
db.settings({ timestampsInSnapshots: true })

在绑定页面的下一步中,他们显示您可以将该模块导入“RecentDocuments”组件

// RecentDocuments.vue
import { db } from './db'

export default {
  data() {
    return {
      documents: [],
    }
  },

  firestore: {
    documents: db.collection('documents'),
  },
}

如果我将同一个 db.js 文件导入另一个组件,它不会创建 firebase firestore 对象的另一个实例,因为它基本上是再次调用 .initializeApp 吗?

// SomeOtherComponent.vue
import { db } from './db'

export default {
  ...

或者我不了解进口是如何运作的?

标签: javascriptfirebasevue.jses6-modulesvuefire

解决方案


不,不会的。导入只发生一次。来自每个进口的出口实际上是单件。您应该能够通过简单地将日志消息添加到导入来验证这一点。


推荐阅读