2016-05-25 4 views
2

Ich wähle die Verwendung des Javascript statt der Polymerfire, weil es besser dokumentiert ist, ich habe die Note-App ausgeführt, aber es gab mir nicht die vollen Fähigkeiten, die ich in Firebase verwenden möchte.Ist es falsch, eine Firebase-App in mehreren Komponenten in Polymer zu initialisieren?

Ich verwende den Code

var config = { 
    apiKey: '<your-api-key>', 
    authDomain: '<your-auth-domain>', 
    databaseURL: '<your-database-url>', 
    storageBucket: '<your-storage-bucket>' 
}; 
firebase.initializeApp(config); 

in einer Auth-Komponente, die den Benutzer anmelden verantwortlich ist, aber ich muss den Überblick über die Auth-Status in anderen Komponenten zu halten, die Seiten in meiner app darstellt. Ich weiß nicht, ob es eine Möglichkeit gibt, die App global zu initialisieren, oder ob das Wiederholen der App-Initialisierung auf jeder Seite die beste Wahl ist. Was ich gerade mache, initialisiert die App in der Ready-Funktion der Komponente jeder Seite, die durch das Routing initialisiert werden kann.

Antwort

1

Ich denke, dass der Polymer-Weg wäre, eine Komponente zu erstellen, die die von firebase.initializeApp zurückgegebene Anwendung exponieren.

Die hacky Weise hatte ich Unit-Test auf der Serverseite zu verwenden, in ist zu versuchen, die App zu bekommen, und wenn es fehlschlägt, ich initialisieren:

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

Ich bevorzuge den Hacky-Weg, sollte es nützlich sein, eine Komponente zu erstellen, um wie eine API von Firebase zu arbeiten, aber ist nicht notwendig, dass die JavaScript-API bereits funktioniert und klingt dumm, eine Komponente zu erstellen, nur um die firebase.initializeApp zu kapseln. –

+1

Ich stimme Ihnen zu, es ist der Teil des Komponentenansatzes, den ich wirklich nicht mag ... In meiner Angular App und in der Knoten-App habe ich eine 'Database'-Klasse erstellt, die die Firebase-App-Instanz kapselt und nur eine Instanz von' freilegt Database 'wirft einen Singleton (und fügt auch einige nützliche Funktionen hinzu) ... –

0

Wenn u Typoskript verwenden Sie das halten können Auth innerhalb der Klasse mit Singleton-Muster. Auf diese Weise wird nur ein einziges Objekt geteilt.

für Javascript - verwenden Sie die js aus der Typoskript-Datei generiert.

+0

Warum gibst du hier kein Beispiel für das Singleton-Muster? Ihre Antwort wäre relevanter ... :) – Badacadabra