javascript - 将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 {
...
或者我不了解进口是如何运作的?
解决方案
不,不会的。导入只发生一次。来自每个进口的出口实际上是单件。您应该能够通过简单地将日志消息添加到导入来验证这一点。
推荐阅读
- node.js - ERR_CERT_INVALID:尝试使用 ngx-socket-io 将客户端连接到使用 HTTPS 自分配证书的 nodejs socketio 时
- hadoop - 如何解决这个 Hadoop core-site.xml 问题?
- java - Android Fatal signal 11 (SIGSEGV) 轮盘教程
- python - 如何在其他方法中访问类属性变量
- xml - 如何根据兄弟属性值从元素中获取文本值?
- mysql - 使用 scala slick 重写此 SQL 查询
- algorithm - 图形变化 - 为了只有一个最小生成树
- html - 单击事件在 HTML Jquery 中不起作用
- symfony - Symfony Sonata 管理面板按出现次数排序(doctrin query builder)
- flutter - 带有 statefull 小部件的 Flutter listview builder 不会使用父小部件中的设置状态进行更新