Upgrade auf das modulare Web SDK (v9)

Für Apps, die derzeit das Web SDK Version 8 oder älter verwenden, wird empfohlen, auf Version 9 anhand der Anweisungen in diesem Leitfaden.

In diesem Leitfaden wird davon ausgegangen, dass Sie mit Version 8 vertraut sind einen 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 nicht die Vorteile der Hauptversion 9 Vorteile einer verringerten App-Größe. Sie benötigen npm oder yarn, um das SDK zu installieren.

Über die kompatiblen Bibliotheken

Für Web SDK Version 9 sind zwei Arten von Bibliotheken verfügbar:

  • Modular: Eine neue API-Oberfläche zum Ermöglichen von Baumschütteln (Entfernen von nicht verwendetem Code), um Ihre Webanwendung so klein und schnell wie möglich zu gestalten.
  • Kompatibel: eine vertraute API-Oberfläche, die vollständig kompatibel mit Version 8. So können Sie ein Upgrade auf Version 9 durchführen, ohne alle Ihren SDK-Code auf einmal. 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 neben dem für Version 9 refaktorierten Code. Das bedeutet, dass Sie App während des Upgrades 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 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. Zusammenfassend lässt sich sagen, 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. Initialisierungscode auf den modularen Stil aktualisieren
  6. Entfernen Sie alle verbleibenden kompatiblen Anweisungen der Version 9 und den kompatiblen Code aus für Ihre 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 [email protected]

# OR

yarn add [email protected]

Importe auf V9-Kompatibilität aktualisieren

Damit Ihr Code nach der Aktualisierung der Abhängigkeit von v8 auf Version 9 verwenden, ändern Sie Ihre Importanweisungen in "Compat" Version jedes Imports. Beispiel:

Vorher: Version 8

import firebase from 'firebase/app';
import 'firebase/auth';
import 'firebase/firestore';

Nachher: Version 9-kompatibel

// v9 compat packages are API compatible with v8 code
import firebase from 'firebase/compat/app';
import 'firebase/compat/auth';
import 'firebase/compat/firestore';

Auf den modularen Stil umstellen

Die APIs der Version 8 basieren hingegen auf einem Dot-Chain-Namespace und einem Dienst. bedeutet der modulare Ansatz von Version 9, dass Ihr Code hauptsächlich um Funktionen. In Version 9 wurden das Firebase-/App-Paket und andere Pakete geben keinen umfassenden Export zurück, der alle aus dem Paket. Stattdessen exportieren die Pakete einzelne Funktionen.

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 getAuth-Funktion verwendet firebaseApp als ersten Parameter. Die Die Funktion onAuthStateChanged wird nicht wie sonst von der Auth-Instanz aus verkettet Version 8; Stattdessen ist es eine kostenlose Funktion, die auth als erstes Zeichen verwendet. .

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 modulare Syntax der 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: Kompatibilität mit Version 9

import firebase from "firebase/compat/app"

firebase.initializeApp({ /* config */ });

Nachher: Version 9 modular

import { initializeApp } from "firebase/app"

const firebaseApp = initializeApp({ /* config */ });

Kompatiblen Code entfernen

Um die Größenvorteile des modularen SDK der Version 9 zu nutzen, Konvertieren Sie alle Aufrufe in den oben gezeigten modularen Stil und entfernen Sie import "firebase/compat/*-Anweisungen aus Ihrem Code. Wenn Sie fertig sind, dürfen keine Verweise mehr auf den globalen Namespace firebase.* oder einen anderen im SDK-Stil der Version 8 an.

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 deutlich reduzierte 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 Beim Baumwackeln in Version 9 werden bis zu 80% weniger Kilobyte vergleichbare App mit Version 8 erstellt.
  • Version 9 wird weiterhin von der kontinuierlichen Funktionsentwicklung profitieren, und Version 8 wird irgendwann eingefroren sein.