Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在聚合物中的多个组件中初始化Firebase应用程序是否错误?_Javascript_Html_Firebase_Polymer - Fatal编程技术网

Javascript 在聚合物中的多个组件中初始化Firebase应用程序是否错误?

Javascript 在聚合物中的多个组件中初始化Firebase应用程序是否错误?,javascript,html,firebase,polymer,Javascript,Html,Firebase,Polymer,我选择使用javascript而不是polymerfire,因为有更好的文档记录,我运行了note应用程序,但它没有给我想要在Firebase中使用的全部功能 我在用密码 var config = { apiKey: '<your-api-key>', authDomain: '<your-auth-domain>', databaseURL: '<your-database-url>', storageBucket: '<your-st

我选择使用javascript而不是polymerfire,因为有更好的文档记录,我运行了note应用程序,但它没有给我想要在Firebase中使用的全部功能

我在用密码

var config = {
  apiKey: '<your-api-key>',
  authDomain: '<your-auth-domain>',
  databaseURL: '<your-database-url>',
  storageBucket: '<your-storage-bucket>'
};
firebase.initializeApp(config);
var配置={
apiKey:“”,
身份验证域:“”,
数据库URL:“”,
storageBucket:“”
};
firebase.initializeApp(配置);

在负责登录用户的auth组件中,但我需要跟踪表示我应用程序中页面的其他组件中的auth状态。我不知道是否有全局初始化应用程序的方法,或者是否在每个页面中重复应用程序初始化是最佳选择。我现在正在做的是在路由可以初始化的每个页面的组件就绪功能中初始化应用程序。

我认为最有效的方法是创建一个组件,公开firebase.initializeApp返回的应用程序

我在服务器端的单元测试中使用的黑客方法是尝试获取应用程序,如果失败,我将初始化它:

var app;
try {
  app = firebase.app();
}
catch(e) {
  app = firebase.initializeApp(...);
}

如果您使用的是typescript,那么可以使用单例模式将auth保留在类中。这样,只有一个对象共享


对于javascript-使用从typescript文件生成的js

我更喜欢黑客的方式,创建一个组件来像Firebase的API一样工作应该很有用,但是一旦javascript API已经可以工作并且仅仅为了封装Firebase而创建一个组件听起来很愚蠢,那么就不需要了。initializeApp。我同意你的观点,这是组件方式的一部分,我真的不喜欢。。。在我的Angular应用程序和In-node应用程序中,我创建了一个
数据库
类,该类封装了firebase应用程序实例,只公开了
数据库的一个实例
抛出一个单例(并在其上添加了一些方便的函数)…为什么不在这里给出一个单例模式的示例?你的答案会更相关……:)