Wenn Sie eine Web-App mit Firebase entwickeln, stoßen Sie möglicherweise auf unbekannte Konzepte oder Bereiche, in denen Sie weitere Informationen benötigen, um die richtigen Entscheidungen für Ihr Projekt zu treffen. Ziel dieser Seite ist es, diese Fragen zu beantworten oder Sie auf Ressourcen hinzuweisen, mit denen Sie mehr erfahren können.
Wenn Sie Fragen zu einem Thema haben, das auf dieser Seite nicht behandelt wird, besuchen Sie eine unserer Online-Communities . Wir werden diese Seite außerdem regelmäßig mit neuen Themen aktualisieren. Schauen Sie also noch einmal vorbei, um zu sehen, ob wir das Thema hinzugefügt haben, über das Sie mehr erfahren möchten.
SDK-Versionen: mit Namensraum und modular
Firebase bietet zwei API-Oberflächen für Web-Apps:
- JavaScript – mit Namensraum. Dabei handelt es sich um die JavaScript-Schnittstelle, die Firebase seit vielen Jahren pflegt und die Webentwicklern mit älteren Firebase-Apps vertraut ist. Da die Namespace-API nicht von der fortlaufenden Unterstützung neuer Funktionen profitiert, sollten die meisten neuen Apps stattdessen die modulare API übernehmen.
- JavaScript – modular . Dieses SDK basiert auf einem modularen Ansatz, der mit modernen JavaScript-Build-Tools wie Webpack oder Rollup eine reduzierte SDK-Größe und mehr Effizienz bietet.
Die modulare API lässt sich gut in Build-Tools integrieren, die Code entfernen, der nicht in Ihrer App verwendet wird. Dieser Vorgang wird als „Tree-Shaking“ bezeichnet. Mit diesem SDK erstellte Apps profitieren von einem deutlich reduzierten Platzbedarf. Obwohl die Namespace-API als Modul verfügbar ist, weist sie keine streng modulare Struktur auf und bietet nicht den gleichen Grad an Größenreduzierung.
Obwohl der Großteil der modularen API denselben Mustern wie die Namespace-API folgt, ist die Organisation des Codes anders. Im Allgemeinen ist die Namespace-API auf ein Namespace- und Servicemuster ausgerichtet, während die modulare API auf diskrete Funktionen ausgerichtet ist. Beispielsweise wird die Punktverkettung der Namespace-API, wie etwa firebaseApp.auth()
, in der modularen API durch eine einzelne getAuth()
Funktion ersetzt, die firebaseApp
übernimmt und eine Authentifizierungsinstanz zurückgibt.
Das bedeutet, dass Web-Apps, die mit der Namespace-API erstellt wurden, eine Umgestaltung erfordern, um die Vorteile des modularen App-Designs nutzen zu können. Weitere Einzelheiten finden Sie im Upgrade-Leitfaden .
JavaScript – modulare API für neue Apps
Wenn Sie mit einer neuen Integration mit Firebase beginnen, können Sie sich beim Hinzufügen und Initialisieren des SDK für die modulare API entscheiden.
Bedenken Sie bei der Entwicklung Ihrer App, dass Ihr Code hauptsächlich um Funktionen herum organisiert wird. In der modularen API werden Dienste als erstes Argument übergeben, und die Funktion verwendet dann die Details des Dienstes, um den Rest zu erledigen. Zum Beispiel:
import { getAuth, onAuthStateChanged } from "firebase/auth";
const auth = getAuth(firebaseApp);
onAuthStateChanged(auth, user => {
// Check for user status
});
Weitere Beispiele und Details finden Sie in den Leitfäden für die einzelnen Produktbereiche sowie in der Referenzdokumentation zur modularen API .
Möglichkeiten zum Hinzufügen der Web-SDKs zu Ihrer App
Firebase bietet JavaScript-Bibliotheken für die meisten Firebase-Produkte, einschließlich Remote Config, FCM und mehr. Wie Sie Firebase-SDKs zu Ihrer Web-App hinzufügen, hängt davon ab, welche Tools Sie mit Ihrer App verwenden (z. B. einen Modul-Bundler).
Sie können Ihrer App jede der verfügbaren Bibliotheken über eine der unterstützten Methoden hinzufügen:
- npm (für Modul-Bundler)
- CDN (Content Delivery Network)
Ausführliche Einrichtungsanweisungen finden Sie unter „Hinzufügen von Firebase zu Ihrer JavaScript-App“ . Der Rest dieses Abschnitts enthält Informationen, die Ihnen bei der Auswahl der verfügbaren Optionen helfen sollen.
npm
Durch das Herunterladen des Firebase npm-Pakets (das sowohl Browser- als auch Node.js-Bundles enthält) erhalten Sie eine lokale Kopie des Firebase SDK, die möglicherweise für Nicht-Browser-Anwendungen wie Node.js-Apps, React Native oder Electron benötigt wird. Der Download umfasst Node.js- und React Native-Bundles als Option für einige Pakete. Die Node.js-Bundles sind für den serverseitigen Rendering-Schritt (SSR) von SSR-Frameworks erforderlich.
Die Verwendung von npm mit einem Modul-Bundler wie Webpack oder Rollup bietet Optimierungsoptionen, um ungenutzten Code zu „strukturieren“ und gezielte Polyfills anzuwenden, was den Größenbedarf Ihrer App erheblich reduzieren kann. Die Implementierung dieser Funktionen kann Ihre Konfiguration und Build-Kette etwas komplexer machen, aber verschiedene gängige CLI-Tools können dabei helfen, dies zu mildern. Zu diesen Tools gehören Angular , React , Vue , Next und andere.
In Summe:
- Bietet wertvolle Optimierung der App-Größe
- Für die Modulverwaltung stehen robuste Tools zur Verfügung
- Erforderlich für SSR mit Node.js
CDN (Content Delivery Network)
Das Hinzufügen von Bibliotheken, die im CDN von Firebase gespeichert sind, ist eine einfache SDK-Einrichtungsmethode, die vielen Entwicklern bekannt sein dürfte. Wenn Sie das CDN zum Hinzufügen der SDKs verwenden, benötigen Sie kein Build-Tool und Ihre Build-Kette ist im Vergleich zu Modul-Bundlern möglicherweise einfacher und benutzerfreundlicher. Wenn Sie sich keine besonderen Gedanken über die installierte Größe Ihrer App machen und keine besonderen Anforderungen wie die Transpilierung aus TypeScript haben, könnte CDN eine gute Wahl sein.
In Summe:
- Vertraut und einfach
- Geeignet, wenn die App-Größe keine große Rolle spielt
- Geeignet, wenn Ihre Website keine Build-Tools verwendet.
Firebase Web SDK-Varianten
Das Web SDK von Firebase kann sowohl in Browser- als auch in Node-Anwendungen verwendet werden. Einige Produkte sind jedoch in Node-Umgebungen nicht verfügbar. Sehen Sie sich die Liste der unterstützten Umgebungen an.
Einige Produkt-SDKs bieten separate Browser- und Node-Varianten, die jeweils sowohl im ESM- als auch im CJS-Format bereitgestellt werden, und einige Produkt-SDKs bieten sogar Cordova- oder React Native-Varianten. Das Web SDK ist so konfiguriert, dass es basierend auf Ihrer Toolkonfiguration oder Umgebung die richtige Variante bereitstellt und in den meisten Fällen keine manuelle Auswahl erforderlich sein sollte. Alle SDK-Varianten sind darauf ausgelegt, die Erstellung von Web-Apps oder Client-Apps für den Endbenutzerzugriff zu unterstützen, beispielsweise in einer Node.js-Desktop- oder IoT-Anwendung. Wenn Sie den Administratorzugriff aus privilegierten Umgebungen (z. B. Servern) einrichten möchten, verwenden Sie stattdessen das Firebase Admin SDK .
Umgebungserkennung mit Bundlern und Frameworks
Wenn Sie das Firebase Web SDK mit npm installieren, werden sowohl die JavaScript- als auch die Node.js-Version installiert. Das Paket bietet eine detaillierte Umgebungserkennung, um die richtigen Bundles für Ihre Anwendung zu aktivieren.
Wenn Ihr Code Node.js- require
Anweisungen verwendet, findet das SDK das Node-spezifische Bundle. Andernfalls müssen die Einstellungen Ihres Bundlers richtig berechnet werden, um das richtige Einstiegspunktfeld in Ihrer package.json
Datei zu erkennen (z. B. main
, browser
oder module
). Wenn beim SDK Laufzeitfehler auftreten, stellen Sie sicher, dass Ihr Bundler so konfiguriert ist, dass er den richtigen Bundle-Typ für Ihre Umgebung priorisiert.
Erfahren Sie mehr über das Firebase-Konfigurationsobjekt
Um Firebase in Ihrer App zu initialisieren, müssen Sie die Firebase-Projektkonfiguration Ihrer App angeben. Sie können Ihr Firebase-Konfigurationsobjekt jederzeit abrufen .
Wir empfehlen, Ihr Konfigurationsobjekt nicht manuell zu bearbeiten, insbesondere die folgenden erforderlichen „Firebase-Optionen“:
apiKey
,projectId
undappID
. Wenn Sie Ihre App mit ungültigen oder fehlenden Werten für diese erforderlichen „Firebase-Optionen“ initialisieren, können bei Benutzern Ihrer App schwerwiegende Probleme auftreten.Wenn Sie Google Analytics in Ihrem Firebase-Projekt aktiviert haben, enthält Ihr Konfigurationsobjekt das
measurementId
. Weitere Informationen zu diesem Feld finden Sie auf der Analytics-Erste Schritte-Seite .Wenn Sie Google Analytics oder Realtime Database aktivieren, nachdem Sie Ihre Firebase-Web-App erstellt haben, stellen Sie sicher, dass das Firebase-Konfigurationsobjekt, das Sie in Ihrer App verwenden, mit den zugehörigen Konfigurationswerten (
measurementId
bzw.databaseURL
) aktualisiert wird. Sie können Ihr Firebase-Konfigurationsobjekt jederzeit abrufen .
Hier ist das Format eines Konfigurationsobjekts mit allen aktivierten Diensten (diese Werte werden automatisch ausgefüllt):
var firebaseConfig = { apiKey: "API_KEY", authDomain: "PROJECT_ID.firebaseapp.com", // The value of `databaseURL` depends on the location of the database databaseURL: "https://DATABASE_NAME.firebaseio.com", projectId: "PROJECT_ID", storageBucket: "PROJECT_ID.appspot.com", messagingSenderId: "SENDER_ID", appId: "APP_ID", // For Firebase JavaScript SDK v7.20.0 and later, `measurementId` is an optional field measurementId: "G-MEASUREMENT_ID", };
Verfügbare Bibliotheken
Zusätzliche Setup-Optionen
Laden von Firebase SDKs (vom CDN) verzögern
Sie können die Einbindung der Firebase SDKs verzögern, bis die gesamte Seite geladen ist. Wenn Sie modulare API-CDN-Skripte mit <script type="module">
verwenden, ist dies das Standardverhalten. Wenn Sie Namespace-CDN-Skripte als Modul verwenden, führen Sie die folgenden Schritte aus, um das Laden zu verzögern:
Fügen Sie jedem
script
Tag für die Firebase-SDKs eindefer
Flag hinzu und verschieben Sie dann die Initialisierung von Firebase mithilfe eines zweiten Skripts, zum Beispiel:<script defer src="https://www.gstatic.com/firebasejs/8.10.1/firebase-app.js"></script> <script defer src="https://www.gstatic.com/firebasejs/8.10.1/firebase-auth.js"></script> <script defer src="https://www.gstatic.com/firebasejs/8.10.1/firebase-firestore.js"></script> // ... <script defer src="./init-firebase.js"></script>
Erstellen Sie eine
init-firebase.js
Datei und fügen Sie dann Folgendes in die Datei ein:// TODO: Replace the following with your app's Firebase project configuration var firebaseConfig = { // ... }; // Initialize Firebase firebase.initializeApp(firebaseConfig);
Verwenden Sie mehrere Firebase-Projekte in einer einzigen App
In den meisten Fällen müssen Sie Firebase nur in einer einzigen Standard-App initialisieren. Sie können von dieser App aus auf zwei gleichwertige Arten auf Firebase zugreifen:
Web modular API
import { initializeApp } from "firebase/app"; import { getStorage } from "firebase/storage"; import { getFirestore } from "firebase/firestore"; // Initialize Firebase with a "default" Firebase project const defaultProject = initializeApp(firebaseConfig); console.log(defaultProject.name); // "[DEFAULT]" // Option 1: Access Firebase services via the defaultProject variable let defaultStorage = getStorage(defaultProject); let defaultFirestore = getFirestore(defaultProject); // Option 2: Access Firebase services using shorthand notation defaultStorage = getStorage(); defaultFirestore = getFirestore();
Web namespaced API
// Initialize Firebase with a "default" Firebase project const defaultProject = firebase.initializeApp(firebaseConfig); console.log(defaultProject.name); // "[DEFAULT]" // Option 1: Access Firebase services via the defaultProject variable let defaultStorage = defaultProject.storage(); let defaultFirestore = defaultProject.firestore(); // Option 2: Access Firebase services using shorthand notation defaultStorage = firebase.storage(); defaultFirestore = firebase.firestore();
Manchmal müssen Sie jedoch gleichzeitig auf mehrere Firebase-Projekte zugreifen. Beispielsweise möchten Sie möglicherweise Daten aus der Datenbank eines Firebase-Projekts lesen, Dateien jedoch in einem anderen Firebase-Projekt speichern. Oder Sie möchten möglicherweise ein Projekt authentifizieren, während ein zweites Projekt nicht authentifiziert bleibt.
Mit dem Firebase JavaScript SDK können Sie mehrere Firebase-Projekte gleichzeitig in einer einzigen App initialisieren und verwenden, wobei jedes Projekt seine eigenen Firebase-Konfigurationsinformationen verwendet.
Web modular API
import { initializeApp, getApp } from "firebase/app"; import { getStorage } from "firebase/storage"; import { getFirestore } from "firebase/firestore"; // Initialize Firebase with a default Firebase project initializeApp(firebaseConfig); // Initialize Firebase with a second Firebase project const otherProject = initializeApp(otherProjectFirebaseConfig, "other"); console.log(getApp().name); // "[DEFAULT]" console.log(otherProject.name); // "otherProject" // Use the shorthand notation to access the default project's Firebase services const defaultStorage = getStorage(); const defaultFirestore = getFirestore(); // Use the otherProject variable to access the second project's Firebase services const otherStorage = getStorage(otherProject); const otherFirestore = getFirestore(otherProject);
Web namespaced API
// Initialize Firebase with a default Firebase project firebase.initializeApp(firebaseConfig); // Initialize Firebase with a second Firebase project const otherProject = firebase.initializeApp(otherProjectFirebaseConfig, "other"); console.log(firebase.app().name); // "[DEFAULT]" console.log(otherProject.name); // "otherProject" // Use the shorthand notation to access the default project's Firebase services const defaultStorage = firebase.storage(); const defaultFirestore = firebase.firestore(); // Use the otherProject variable to access the second project's Firebase services const otherStorage = otherProject.storage(); const otherFirestore = otherProject.firestore();
Führen Sie einen lokalen Webserver für die Entwicklung aus
Wenn Sie eine Web-App erstellen, erfordern einige Teile des Firebase JavaScript SDK, dass Sie Ihre Web-App von einem Server und nicht vom lokalen Dateisystem bereitstellen. Sie können die Firebase-CLI verwenden, um einen lokalen Server auszuführen.
Wenn Sie Firebase Hosting bereits für Ihre App eingerichtet haben, haben Sie möglicherweise bereits mehrere der folgenden Schritte ausgeführt.
Um Ihre Web-App bereitzustellen, verwenden Sie die Firebase-CLI, ein Befehlszeilentool.
Besuchen Sie die Firebase-CLI-Dokumentation, um zu erfahren, wie Sie die CLI installieren oder auf die neueste Version aktualisieren .
Initialisieren Sie Ihr Firebase-Projekt. Führen Sie den folgenden Befehl im Stammverzeichnis Ihres lokalen App-Verzeichnisses aus:
firebase init
Verknüpft Ihr lokales App-Verzeichnis mit Firebase
Erzeugt eine Datei
firebase.json
(eine erforderliche Datei für Firebase Hosting)Fordert Sie auf, ein öffentliches Stammverzeichnis anzugeben, das Ihre öffentlichen statischen Dateien (HTML, CSS, JS usw.) enthält.
Der Standardname für das Verzeichnis, nach dem Firebase sucht, ist „public“. Sie können das öffentliche Verzeichnis auch später festlegen , indem Sie Ihre Datei
firebase.json
direkt ändern.
Starten Sie den lokalen Server für die Entwicklung. Führen Sie den folgenden Befehl im Stammverzeichnis Ihres lokalen App-Verzeichnisses aus:
firebase serve
Open-Source-Ressourcen für Firebase-JavaScript-SDKs
Firebase unterstützt die Open-Source-Entwicklung und wir ermutigen Community-Beiträge und Feedback.
Firebase-JavaScript-SDKs
Die meisten Firebase-JavaScript-SDKs werden als Open-Source-Bibliotheken in unserem öffentlichen Firebase-GitHub-Repository entwickelt.
Schnellstartbeispiele
Firebase verwaltet eine Sammlung von Schnellstartbeispielen für die meisten Firebase-APIs im Web. Diese Schnellstarts finden Sie in unserem öffentlichen Firebase GitHub-Schnellstart-Repository . Sie können diese Schnellstarts als Beispielcode für die Verwendung von Firebase SDKs verwenden.