Verknüpfen Sie Cloud Functions mit Firebase Hosting, um Ihre dynamischen Inhalte zu generieren und bereitzustellen oder REST APIs als Mikrodienste zu erstellen.
Cloud Functions for Firebase ermöglicht die automatische Ausführung von Backend -Code als Reaktion auf HTTPS-Anfragen. Ihr Code wird in Google Cloud gespeichert und in einer verwalteten Umgebung ausgeführt. Sie müssen keine eigenen Server verwalten und skalieren.
Beispiele für Anwendungsfälle und Beispiele für Cloud Functions die in Firebase Hosting eingebunden sind, finden Sie in unserer Übersicht zu serverlosen Diensten.
Cloud Functions mit Firebase Hosting verbinden
In diesem Abschnitt finden Sie ein Beispiel für die Verbindung einer Funktion mit Firebase Hosting.
Hinweis: Zur Verbesserung der Leistung bei der Bereitstellung dynamischer Inhalte können Sie optional die Cache-Einstellungen anpassen.
Schritt 1: einrichten Cloud Functions
Prüfen Sie, ob Sie die neueste Version der Firebase CLI haben und dass Sie Firebase Hosting initialisiert haben.
Eine detaillierte Anleitung zur Installation der CLI und zur Initialisierung Hosting finden Sie im Leitfaden Erste Schritte mit Hosting.
Prüfen Sie, ob Sie Cloud Functions eingerichtet haben:
Wenn Sie bereits eingerichtet haben Cloud Functions, können Sie mit Schritt 2: HTTPS-Funktion erstellen und testen fortfahren.
Wenn Sie nicht eingerichtet habenCloud Functions:
Initialisieren Sie Cloud Functions, indem Sie den folgenden Befehl im Stammverzeichnis Ihres Projektverzeichnisses ausführen:
firebase init functions
Wählen Sie bei entsprechender Aufforderung JavaScript aus. In diesem Beispiel wird JS verwendet.
Prüfen Sie, ob sich in Ihrem lokalen Projektverzeichnis ein Verzeichnis
functionsbefindet, das durch den gerade ausgeführten Firebase-Befehl erstellt wurde. In diesemfunctionsVerzeichnis befindet sich der Code für Cloud Functions.
Schritt 2: HTTPS-Funktion für Ihre Hosting Website erstellen und testen
Öffnen Sie
/functions/index.jsin Ihrem bevorzugten Editor.Ersetzen Sie den Inhalt der Datei durch den folgenden Code.
Mit diesem Code wird eine HTTPS-Funktion namens
bigbenerstellt, die auf HTTPS-Anfragen mit einemBONGfür jede Stunde des Tages antwortet, genau wie eine Uhr.const functions = require('firebase-functions/v1'); exports.bigben = functions.https.onRequest((req, res) => { const hours = (new Date().getHours() % 12) + 1 // London is UTC + 1hr; res.status(200).send(`<!doctype html> <head> <title>Time</title> </head> <body> ${'BONG '.repeat(hours)} </body> </html>`); });Testen Sie Ihre Funktionen lokal mit der Firebase Local Emulator Suite.
Führen Sie im Stammverzeichnis Ihres lokalen Projektverzeichnisses den folgenden Befehl aus:
firebase emulators:start
Greifen Sie über die lokale URL auf die Funktion zu, die von der CLI zurückgegeben wird, z. B.
.http://localhost:5001/PROJECT_ID/us-central1/bigben
Weitere Informationen zu HTTPS-Anfragen finden Sie in der Cloud Functions Dokumentation.
Im nächsten Schritt erfahren Sie, wie Sie auf diese HTTPS-Funktion über eine Firebase Hosting URL zugreifen können, damit sie dynamische Inhalte für Ihre von Firebase gehostete Website generieren kann.
Schritt 3:HTTPS-Anfragen an Ihre Funktion weiterleiten
Mit
Umschreibungsregeln können Sie Anfragen
, die bestimmten Mustern entsprechen, an ein einzelnes Ziel weiterleiten. In den folgenden Schritten wird gezeigt,
wie Sie alle Anfragen vom Pfad ../bigben auf Ihrer Hosting
Website weiterleiten, um die Funktion bigben auszuführen.
Öffnen Sie die Datei
firebase.json.Fügen Sie die folgende
rewrite-Konfiguration im Abschnitthostinghinzu:"hosting": { // ... // Add the "rewrites" attribute within "hosting" "rewrites": [ { "source": "/bigben", "function": { "functionId": "bigben", "region": "us-central1" // optional (see note below) "pinTag": true // optional (see note below) } } ] }Bestätigen Sie, dass die Weiterleitung wie erwartet funktioniert, indem Sie sie noch einmal mit den Firebase-Emulatoren testen.
Führen Sie im Stammverzeichnis Ihres lokalen Projektverzeichnisses den folgenden Befehl aus:
firebase emulators:start
Rufen Sie die lokal gehostete URL für Ihre Website auf, die von der CLI zurückgegeben wird (in der Regel
localhost:5000), und fügen Siebigbenan die URL an, z. B.:http://localhost:5000/bigben
Wiederholen Sie die Funktion und ihre Funktionalität für Ihre Website. Verwenden Sie die Firebase-Emulatoren, um diese Iterationen zu testen.
Für eine optimale Leistung sollten Sie Ihre Funktionen mit Hosting zusammenlegen, indem Sie eine der folgenden Regionen auswählen:
us-west1us-central1us-east1europe-west1asia-east1
Weitere Informationen zu Umschreibungsregeln finden Sie auf der Hosting Konfigurationsseite für mehr Details. Sie können sich auch über die Prioritätsreihenfolge von Antworten für verschiedene Hosting Konfigurationen informieren.
Hinweis: Zur Verbesserung der Leistung bei der Bereitstellung dynamischer Inhalte können Sie optional die Cache-Einstellungen anpassen.
Schritt 4:Funktion bereitstellen
Sobald Ihre Funktion im Emulator wie gewünscht funktioniert, können Sie sie mit echten Projektressourcen bereitstellen, testen und ausführen. Jetzt ist ein guter Zeitpunkt, um Laufzeitoptionen festzulegen, mit denen Sie das Skalierungsverhalten für Funktionen steuern können, die in der Produktion ausgeführt werden.
Stellen Sie Ihre Funktion sowie Ihre Hosting Inhalte und Konfiguration auf Ihrer Website bereit, indem Sie den folgenden Befehl im Stammverzeichnis Ihres lokalen Projekt Verzeichnisses ausführen:
firebase deploy --only functions,hosting
Greifen Sie unter den folgenden URLs auf Ihre Live-Website und Ihre Funktion zu:
Ihre Firebase-Subdomains:
PROJECT_ID.web.app/bigbenundPROJECT_ID.firebaseapp.com/bigbenAlle verbundenen benutzerdefinierten Domains:
CUSTOM_DOMAIN/bigben
Web-Framework verwenden
Sie können Web-Frameworks wie Express.js in Cloud Functions verwenden, um die dynamischen Inhalte Ihrer App bereitzustellen und komplexe Webanwendungen einfacher zu schreiben.
Im folgenden Abschnitt finden Sie ein Beispiel für die Verwendung von Express.js mit Firebase Hosting und Cloud Functions.
Installieren Sie Express.js in Ihrem lokalen Projekt, indem Sie den folgenden Befehl im Verzeichnis
functionsausführen:npm install express --save
Öffnen Sie die Datei
/functions/index.jsund importieren und initialisieren Sie Express.js:const functions = require('firebase-functions/v1'); const express = require('express'); const app = express();
Fügen Sie die folgenden beiden Endpunkte hinzu:
Fügen Sie den ersten Endpunkt hinzu, um den Index unserer Website unter
/bereitzustellen.app.get('/', (req, res) => { const date = new Date(); const hours = (date.getHours() % 12) + 1; // London is UTC + 1hr; res.send(` <!doctype html> <head> <title>Time</title> <link rel="stylesheet" href="/style.css"> <script src="/script.js"></script> </head> <body> <p>In London, the clock strikes: <span id="bongs">${'BONG '.repeat(hours)}</span></p> <button onClick="refresh(this)">Refresh</button> </body> </html>`); });Und ein weiterer Endpunkt, um die Anzahl der
BONGals API im JSON-Format unter/apizurückzugeben:app.get('/api', (req, res) => { const date = new Date(); const hours = (date.getHours() % 12) + 1; // London is UTC + 1hr; res.json({bongs: 'BONG '.repeat(hours)}); });
Exportieren Sie die Express.js-App als HTTPS-Funktion:
exports.app = functions.https.onRequest(app);
Leiten Sie in der Datei
firebase.jsonalle Anfragen an die Funktionappweiter. Mit dieser Umschreibung kann Express.js den verschiedenen von uns konfigurierten Unterpfad bereitstellen (in diesem Beispiel/und/api).{ "hosting": { // ... // Add the "rewrites" attribute within "hosting" "rewrites": [ { "source": "**", "function": "app" } ] } }
Middleware hinzufügen
In unserem Beispiel können Sie jetzt, da Sie Express.js verwenden, auf die übliche Weise Express.js-Middleware hinzufügen. Sie können beispielsweise CORS Anfragen an unseren Endpunkten aktivieren.
Installieren Sie die
cors-Middleware, indem Sie den folgenden Befehl ausführen:npm install --save cors
Öffnen Sie die Datei
/functions/index.jsund fügen Siecorsso zu Ihrer Express.js-App hinzu:const cors = require('cors')({origin: true}); app.use(cors);
Weitere Informationen zur Verwendung von Firebase mit Express-Apps und Middleware-Modulen finden Sie in der Cloud FunctionsDokumentation.
Nächste Schritte
Richten Sie das Caching ein für Ihre dynamischen Inhalte in einem globalen CDN.
Interagieren Sie mit anderen Firebase-Diensten über das Firebase Admin SDK.
Informationen zu den Preisen sowie den Kontingenten und Limits für Cloud Functions