Upgrade auf das modulare Web SDK (v9)
Für Apps, in denen derzeit die Web SDK-Version 8 oder niedriger verwendet wird, empfehlen wir die Migration auf Version 9. Folgen Sie dazu der Anleitung in diesem Leitfaden.
In diesem Leitfaden wird davon ausgegangen, dass Sie mit Version 8 vertraut sind Module-Bundler wie webpack oder Rollup für das Upgrade und die fortlaufende Entwicklung von Version 9.
Es wird dringend empfohlen, in Ihrer Entwicklungsumgebung einen Module Bundler zu verwenden. Andernfalls können Sie die Hauptvorteile von Version 9 in Bezug auf die reduzierte App-Größe nicht nutzen. Sie benötigen npm oder yarn, um das SDK zu installieren.
Compat-Bibliotheken
Für die Web SDK-Version 9 sind zwei Arten von Bibliotheken verfügbar:
- Modular: Eine neue API-Oberfläche, die das Tree-Shaking (Entfernen von nicht verwendetem Code) vereinfacht, um Ihre Webanwendung so klein und schnell wie möglich zu machen.
- Compat: Eine vertraute API-Oberfläche, die vollständig mit Version 8 kompatibel ist. So können Sie auf Version 9 upgraden, ohne den gesamten SDK-Code auf einmal zu ändern. Kompaktbibliotheken haben geringe bis keine Größe oder Leistungsvorteile im Vergleich zu Version 8.
In diesem Leitfaden wird davon ausgegangen, dass Sie die Kompatibilität mit Version 9 nutzen. um das Upgrade zu erleichtern. Mit diesen Bibliotheken können Sie Code der Version 8 zusammen mit Code verwenden, der für Version 9 umgeschrieben wurde. So können Sie Ihre App beim Upgrade-Vorgang einfacher kompilieren und debuggen.
Für Apps, bei denen das Web SDK sehr wenig sichtbar ist, kann es sinnvoll sein, Code der Version 8 refaktorieren, ohne die kompatiblen Bibliotheken der Version 9 zu verwenden. Wenn Sie wenn Sie eine solche App aktualisieren, folgen Sie der Anleitung in diesem Handbuch für "version 9 modular" ohne die entsprechenden Bibliotheken zu verwenden.
Informationen zur Umstellung
Jeder Schritt des Upgradeprozesses ist begrenzt, sodass Sie die Bearbeitung des Quelle für Ihre App und kompilieren und führen sie dann ohne Unterbrechung aus. So aktualisieren Sie eine App:
- Fügen Sie Ihrer App die Bibliotheken der Version 9 und die entsprechenden Bibliotheken hinzu.
- Aktualisieren Sie die Importanweisungen in Ihrem Code auf v9-kompatibel.
- Refaktorieren Sie den Code auf den modularen Stil.
- Entfernen Sie die kompatible Authentication-Bibliothek und den Compat-Code für Authentifizierung, um den Vorteil der App-Größe zu nutzen.
- Aktualisieren Sie den Initialisierungscode auf den modularen Stil.
- Entfernen Sie alle verbleibenden Version 9-Kompatibilitätsanweisungen und -Code aus Ihrer App.
SDK für Version 9 herunterladen
Laden Sie zuerst die Bibliotheken der Version 9 und kompatible Bibliotheken mit npm herunter (aktuelle Version) https://www.npmjs.com/package/firebase):
npm i firebase@10.14.1
# OR
yarn add firebase@10.14.1
Importe auf Version 9 umstellen
Damit Ihr Code nach der Aktualisierung Ihrer Abhängigkeit von Version 8 auf Version 9 weiterhin funktioniert, ändern Sie Ihre Importanweisungen so, dass die „compat“-Version jedes Imports verwendet wird. Beispiel:
Vorher: Version 8
import firebase from 'firebase/app';
import 'firebase/auth';
import 'firebase/firestore';
Nachher: Kompatibilität mit Version 9
// v9 compat packages are API compatible with v8 code
import firebase from 'firebase/compat/app';
import 'firebase/compat/auth';
import 'firebase/compat/firestore';
Zum modularen Stil umstrukturieren
Während die APIs der Version 8 auf einem durch Punkte verknüpften Namespace- und Dienstmuster basieren, wird Ihr Code bei der Version 9 modular organisiert, d. h. hauptsächlich um Funktionen herum. In Version 9 geben das firebase/app-Paket und andere Pakete keinen umfassenden Export zurück, der alle Methoden aus dem Paket enthält. Stattdessen werden einzelne Funktionen exportiert.
In Version 9 werden Dienste als erstes Argument übergeben und die Funktion für den Rest verwendet.
Beispiel: Refaktorierung einer einfachen Authentifizierungsfunktion
Vorher: Kompatibilität mit Version 9
Der kompatible Code der Version 9 ist mit dem Code der Version 8 identisch, aber die Importe haben sich geändert. Wenn Sie die kompatiblen Bibliotheken während des Upgrades verwenden, können Sie fortfahren neben dem für Version 9 refaktorierten Code.
import firebase from "firebase/compat/app";
import "firebase/compat/auth";
const auth = firebase.auth();
auth.onAuthStateChanged(user => {
// Check for user status
});
Nachher: Version 9 modular
Die Funktion getAuth
verwendet firebaseApp
als ersten Parameter. Die Funktion onAuthStateChanged
wird nicht wie in Version 8 über die Authentifizierungs-Instanz verkettet. Stattdessen ist sie eine freie Funktion, die auth
als ersten Parameter annimmt.
import { getAuth, onAuthStateChanged } from "firebase/auth";
const auth = getAuth(firebaseApp);
onAuthStateChanged(auth, user => {
// Check for user status
});
Initialisierungscode aktualisieren
Aktualisieren Sie den Initialisierungscode Ihrer App, um die neue Syntax der modularen Version 9 zu verwenden. Es ist
Es ist wichtig, dass Sie diesen Code aktualisieren, nachdem Sie alle
Code in Ihrer App Das liegt daran, dass firebase.initializeApp()
globale
für die kompatiblen und modularen APIs, während die modularen
Die Funktion initializeApp()
initialisiert nur den Status für modular.
Vorher: Version 9-Kompatibilität
import firebase from "firebase/compat/app"
firebase.initializeApp({ /* config */ });
Nachher: Version 9 modular
import { initializeApp } from "firebase/app"
const firebaseApp = initializeApp({ /* config */ });
Compat-Code entfernen
Wenn Sie die Vorteile des modularen SDKs der Version 9 in Bezug auf die Größe nutzen möchten, sollten Sie alle Aufrufe in den oben gezeigten modularen Stil umwandeln und alle import "firebase/compat/*
-Anweisungen aus Ihrem Code entfernen. Wenn Sie fertig sind, sollten keine Verweise mehr auf den globalen Namespace firebase.*
oder anderen Code im SDK-Stil der Version 8 vorhanden sein.
Vorteile und Einschränkungen von Version 9
Die vollständig modularisierte Version 9 hat gegenüber früheren Versionen diese Vorteile:
- Version 9 ermöglicht eine drastische Reduzierung der App-Größe. Sie übernimmt die das moderne JavaScript-Modulformat, Praktiken in Sie importieren nur die Artefakte, die Ihre App benötigt. Je nach App kann das Tree Shaking mit Version 9 zu 80 % weniger Kilobyten führen als bei einer vergleichbaren App, die mit Version 8 erstellt wurde.
- Version 9 wird weiterhin von der kontinuierlichen Funktionsentwicklung profitieren, und Version 8 wird irgendwann eingefroren sein.