Firebase Hosting rezerwuje adresy URL w witrynie zaczynające się od /__
. Ta zastrzeżona przestrzeń nazw ułatwia korzystanie z innych usług Firebase razem z Firebase Hosting.
Te zarezerwowane adresy URL są dostępne zarówno podczas wdrażania w Firebase (firebase deploy
), jak i podczas uruchamiania aplikacji na serwerze lokalnym (firebase serve
).
Dodawanie skryptów do zarezerwowanych adresów URL
Ponieważ Firebase Hosting jest udostępniana przez HTTP/2 po wdrożeniu, możesz zwiększyć wydajność, ładując pliki z tego samego źródła. Firebase Hosting udostępnia wersję 8 pakietu SDK Firebase JavaScript z adresów URL o specjalnym formacie:
/__/firebase/JS_SDK_VERSION/FIREBASE_SDK_NAME.js
Zdecydowanie zalecamy wczytywanie tylko tych bibliotek, których używasz w aplikacji. Aby na przykład uwzględnić tylko Authentication i Cloud Firestore, dodaj te skrypty na końcu tagu <body>
, ale zanim zaczniesz używać 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 pakietu SDK
Automatyczna konfiguracja pakietu SDK ułatwia zarządzanie wieloma środowiskami (np. programistycznym, przejściowym i produkcyjnym) z poziomu jednego kodu. Korzystając z zarezerwowanego adresu URL Hosting, możesz wdrożyć ten sam kod w wielu projektach Firebase.
Oprócz hostowania samych pakietów SDK zarezerwowana przestrzeń nazw zapewnia też całą konfigurację niezbędną do zainicjowania pakietu SDK w projekcie Firebase powiązanym z witryną Hosting. Ta konfiguracja Firebase i inicjowanie pakietu SDK są udostępniane przez skrypt, który możesz uwzględnić bezpośrednio:
<!-- Load the Firebase SDKs before loading this file -->
<script src="/__/firebase/init.js"></script>
Gdy wdrażasz aplikację w Firebase lub testujesz ją lokalnie, ten skrypt automatycznie konfiguruje Firebase JavaScript pakiet SDK dla aktywnego projektu Firebase i go inicjuje.
Jeśli wolisz samodzielnie kontrolować inicjowanie, wartości konfiguracji Firebase są też dostępne w formacie JSON:
fetch('/__/firebase/init.json').then(async response => {
firebase.initializeApp(await response.json());
});
Dostępne pakiety SDK Firebase JS (z zarezerwowanych adresów URL Hosting)
Usługa Firebase | Odwołanie do biblioteki (zarezerwowany adres URL) |
---|---|
Podstawowe usługi Firebase (wymagane) |
<script src="/__/firebase/8.10.1/firebase-app.js"></script> |
Analytics | <script src="/__/firebase/8.10.1/firebase-analytics.js"></script> |
App Check | <script src="/__/firebase/8.10.1/firebase-app-check.js"></script> |
Authentication | <script src="/__/firebase/8.10.1/firebase-auth.js"></script> |
Cloud Firestore | <script src="/__/firebase/8.10.1/firebase-firestore.js"></script> |
Cloud Functions for Firebase Client SDK | <script src="/__/firebase/8.10.1/firebase-functions.js"></script> |
Firebase instalacje | <script src="/__/firebase/8.10.1/firebase-installations.js"></script> |
Cloud Messaging | <script src="/__/firebase/8.10.1/firebase-messaging.js"></script> Aby w pełni korzystać z Cloud Messaging, dodaj też pakiet SDK Firebase dla Analytics. |
Cloud Storage | <script src="/__/firebase/8.10.1/firebase-storage.js"></script> |
Performance Monitoring
(wersja beta) |
<script src="/__/firebase/8.10.1/firebase-performance.js"></script> |
Realtime Database | <script src="/__/firebase/8.10.1/firebase-database.js"></script> |
Remote Config
(wersja beta) |
<script src="/__/firebase/8.10.1/firebase-remote-config.js"></script> Aby w pełni korzystać z Remote Config, dodaj też pakiet SDK Firebase dla Analytics. |
Firebase JavaScriptpakiet SDK (cały pakiet SDK); |
<script src="/__/firebase/8.10.1/firebase.js"></script> |
Narzędzia uwierzytelniania
Firebase Authentication używa zarezerwowanej przestrzeni nazw, aby udostępniać specjalny kod JavaScript i HTML do uwierzytelniania u dostawców za pomocą protokołu OAuth. Dzięki temu każdy projekt Firebase ma unikalną subdomenę Firebase, co zwiększa bezpieczeństwo Firebase Authentication.
Umożliwia to też używanie własnej domeny niestandardowej w przypadku authDomain
firebase.initializeApp()
. Jeśli skonfigurujesz domenę niestandardową dla Firebase Hosting, możesz też określić tę domenę niestandardową (zamiast subdomeny web.app
lub firebaseapp.com
) podczas inicjowania pakietów SDK Firebase. Więcej informacji o używaniu domeny niestandardowej znajdziesz w artykule Sprawdzone metody korzystania z funkcji signInWithRedirect.
Zarezerwowane adresy URL i instancje robocze usługi
Jeśli tworzysz progresywną aplikację internetową (PWA), możesz utworzyć skrypt service worker, który ma „rezerwę nawigacyjną” i domyślnie renderuje określony adres URL, jeśli nie pasuje on do listy wstępnie zapisanych w pamięci podręcznej elementów.
Jeśli używasz biblioteki sw-precache, możesz dodać ustawienie białej listy rezerwowej nawigacji, które wyklucza zarezerwowaną przestrzeń nazw:
{
navigateFallbackWhitelist: [/^(?!\/__).*/]
}
Pamiętaj, że przestrzeń nazw z podwójnym podkreśleniem jest zarezerwowana na potrzeby Firebase i nie należy przechwytywać tych żądań w usłudze Service Worker.