Załaduj zestawy SDK Firebase z zarezerwowanych adresów URL

Hosting Firebase rezerwuje adresy URL w Twojej witrynie zaczynające się od /__ . Ta zarezerwowana przestrzeń nazw ułatwia korzystanie z innych produktów Firebase razem z Firebase Hosting.

Te zastrzeżone adresy URL są dostępne zarówno podczas wdrażania w Firebase ( firebase deploy ), jak i podczas uruchamiania aplikacji na serwerze lokalnym ( firebase serve ).

Dodaj skrypty dla zarezerwowanych adresów URL

Ponieważ Hosting Firebase po wdrożeniu jest obsługiwany przez protokół HTTP/2, możesz zwiększyć wydajność, ładując pliki z tego samego źródła. Firebase Hosting obsługuje wersję 8 pakietu SDK Firebase JavaScript ze specjalnych adresów URL sformatowanych w następujący sposób:

/__/firebase/JS_SDK_VERSION/FIREBASE_SDK_NAME.js

Zdecydowanie zalecamy ładowanie tylko bibliotek , których używasz w swojej aplikacji. Na przykład, aby uwzględnić tylko uwierzytelnianie i Cloud Firestore, dodaj następujące skrypty na dole tagu <body> , ale przed użyciem jakichkolwiek usług Firebase:

<body>
  <!-- Insert these scripts at the bottom of the HTML, but before you use any Firebase services -->
  <!-- Firebase App (the core Firebase SDK) is always required and must be listed first -->
  <script src="/__/firebase/8.10.1/firebase-app.js"></script>

  <!-- Add Firebase products that you want to use -->
  <script src="/__/firebase/8.10.1/firebase-auth.js"></script>
  <script src="/__/firebase/8.10.1/firebase-firestore.js"></script>
</body>

Automatyczna konfiguracja SDK

Automatyczna konfiguracja zestawu SDK ułatwia zarządzanie wieloma środowiskami (takimi jak programowanie, przemieszczanie i produkcja) z jednej bazy kodu. Opierając się na zarezerwowanym adresie URL hostingu, możesz wdrożyć ten sam kod w wielu projektach Firebase.

Oprócz hostowania samych zestawów SDK, zarezerwowana przestrzeń nazw zapewnia również całą konfigurację niezbędną do zainicjowania zestawu SDK dla projektu Firebase powiązanego z witryną hostingową. Ta konfiguracja Firebase i inicjalizacja pakietu SDK jest zapewniana przez skrypt, który możesz bezpośrednio dołączyć:

<!-- Load the Firebase SDKs before loading this file -->
<script src="/__/firebase/init.js"></script>

Po wdrożeniu w Firebase lub lokalnym testowaniu aplikacji ten skrypt automatycznie konfiguruje zestaw SDK JavaScript Firebase dla aktywnego projektu Firebase i inicjuje zestaw SDK.

Jeśli wolisz samodzielnie kontrolować inicjalizację, wartości konfiguracyjne Firebase są również dostępne w formie JSON:

fetch('/__/firebase/init.json').then(async response => {
  firebase.initializeApp(await response.json());
});

Dostępne zestawy SDK Firebase JS (z zarezerwowanych adresów URL hostingu)

Produkt Firebase Odniesienie do biblioteki (zarezerwowany adres URL)
Rdzeń Firebase
(wymagany)
<script src="/__/firebase/8.10.1/firebase-app.js"></script>
Analityka
<script src="/__/firebase/8.10.1/firebase-analytics.js"></script>
Kontrola aplikacji
<script src="/__/firebase/8.10.1/firebase-app-check.js"></script>
Uwierzytelnianie
<script src="/__/firebase/8.10.1/firebase-auth.js"></script>
Chmura Firestore
<script src="/__/firebase/8.10.1/firebase-firestore.js"></script>
Funkcje chmury dla pakietu SDK klienta Firebase
<script src="/__/firebase/8.10.1/firebase-functions.js"></script>
Instalacje Firebase
<script src="/__/firebase/8.10.1/firebase-installations.js"></script>
Wiadomości w chmurze
<script src="/__/firebase/8.10.1/firebase-messaging.js"></script>

Aby uzyskać optymalne wrażenia z korzystania z Cloud Messaging, dodaj także pakiet SDK Firebase dla Analytics.

Magazyn w chmurze
<script src="/__/firebase/8.10.1/firebase-storage.js"></script>
Monitoring wydajności
(wersja beta )
<script src="/__/firebase/8.10.1/firebase-performance.js"></script>
Baza danych czasu rzeczywistego
<script src="/__/firebase/8.10.1/firebase-database.js"></script>
Zdalna konfiguracja
(wersja beta )
<script src="/__/firebase/8.10.1/firebase-remote-config.js"></script>

Aby optymalnie korzystać ze zdalnej konfiguracji, dodaj także pakiet SDK Firebase dla Analytics.

Zestaw SDK JavaScript Firebase
(cały pakiet SDK)
<script src="/__/firebase/8.10.1/firebase.js"></script>

Pomocnicy uwierzytelniania

Uwierzytelnianie Firebase wykorzystuje zarezerwowaną przestrzeń nazw, aby zapewnić specjalny JavaScript i HTML w celu zakończenia uwierzytelniania u dostawców za pośrednictwem OAuth. Dzięki temu każdy projekt Firebase może mieć unikalną subdomenę Firebase, co zwiększa bezpieczeństwo uwierzytelniania Firebase.

Ponadto umożliwia to użycie własnej domeny niestandardowej dla opcji authDomain funkcji firebase.initializeApp() . Jeśli skonfigurujesz domenę niestandardową dla Hostingu Firebase, możesz także określić tę domenę niestandardową (zamiast subdomeny web.app lub firebaseapp.com ) podczas inicjowania zestawów SDK Firebase.

Zarezerwowane adresy URL i pracownicy usług

Jeśli tworzysz progresywną aplikację internetową (PWA), możesz utworzyć proces roboczy usługi, który ma „awarię nawigacji” i domyślnie renderuje określony adres URL, jeśli nie pasuje on do listy wstępnie buforowanych elementów.

Jeśli używasz biblioteki sw-precache , możesz dodać rezerwowe ustawienie białej listy nawigacji, które wyklucza zarezerwowaną przestrzeń nazw:

{
  navigateFallbackWhitelist: [/^(?!\/__).*/]
}

Ogólnie rzecz biorąc, pamiętaj, że przestrzeń nazw z podwójnym podkreśleniem jest zarezerwowana do użytku w Firebase i że nie powinieneś przechwytywać tych żądań w swoim Service Worker.