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:

  1. Fügen Sie Ihrer App die Bibliotheken der Version 9 und die entsprechenden Bibliotheken hinzu.
  2. Aktualisieren Sie die Importanweisungen in Ihrem Code auf v9-kompatibel.
  3. Refaktorieren Sie den Code auf den modularen Stil.
  4. Entfernen Sie die kompatible Authentication-Bibliothek und den Compat-Code für Authentifizierung, um den Vorteil der App-Größe zu nutzen.
  5. Aktualisieren Sie den Initialisierungscode auf den modularen Stil.
  6. 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.