Carica gli SDK Firebase dagli URL riservati

Firebase Hosting riserva gli URL nel tuo sito che iniziano con /__ . Questo spazio dei nomi riservato semplifica l'utilizzo di altri prodotti Firebase insieme a Firebase Hosting.

Questi URL riservati sono disponibili sia quando esegui la distribuzione su Firebase ( firebase deploy ) sia quando esegui la tua app su un server locale ( firebase serve ).

Aggiungi script per URL riservati

Poiché Firebase Hosting viene servito su HTTP/2 quando distribuito, puoi migliorare le prestazioni caricando file dalla stessa origine. Firebase Hosting offre la versione 8 dell'SDK JavaScript Firebase da URL speciali formattati in questo modo:

/__/firebase/JS_SDK_VERSION/FIREBASE_SDK_NAME.js

Ti consigliamo vivamente di caricare solo le librerie che utilizzi nella tua app. Ad esempio, per includere solo Authentication e Cloud Firestore, aggiungi i seguenti script alla fine del tag <body> , ma prima di utilizzare qualsiasi servizio 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>

Configurazione automatica dell'SDK

La configurazione automatica dell'SDK semplifica la gestione di più ambienti (come sviluppo, gestione temporanea e produzione) da un'unica base di codice. Facendo affidamento sull'URL di hosting riservato, puoi distribuire lo stesso codice su più progetti Firebase.

Oltre a ospitare gli SDK stessi, lo spazio dei nomi riservato fornisce anche tutta la configurazione necessaria per inizializzare l'SDK per il progetto Firebase associato al sito di hosting. La configurazione di Firebase e l'inizializzazione dell'SDK sono fornite da uno script che puoi includere direttamente:

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

Quando distribuisci su Firebase o testi la tua app localmente, questo script configura automaticamente l'SDK JavaScript di Firebase per il progetto Firebase attivo e inizializza l'SDK.

Se preferisci controllare tu stesso l'inizializzazione, i valori di configurazione di Firebase sono disponibili anche in formato JSON:

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

SDK JS Firebase disponibili (da URL di hosting riservati)

Prodotto Firebase Riferimento alla biblioteca (URL riservato)
Nucleo Firebase
(necessario)
<script src="/__/firebase/8.10.1/firebase-app.js"></script>
Analitica
<script src="/__/firebase/8.10.1/firebase-analytics.js"></script>
Controllo dell'app
<script src="/__/firebase/8.10.1/firebase-app-check.js"></script>
Autenticazione
<script src="/__/firebase/8.10.1/firebase-auth.js"></script>
Cloud Fire Store
<script src="/__/firebase/8.10.1/firebase-firestore.js"></script>
Funzioni cloud per SDK client Firebase
<script src="/__/firebase/8.10.1/firebase-functions.js"></script>
Installazioni Firebase
<script src="/__/firebase/8.10.1/firebase-installations.js"></script>
Messaggistica sul cloud
<script src="/__/firebase/8.10.1/firebase-messaging.js"></script>

Per un'esperienza ottimale utilizzando Cloud Messaging, aggiungi anche Firebase SDK for Analytics.

Archiviazione nel cloud
<script src="/__/firebase/8.10.1/firebase-storage.js"></script>
Monitoraggio delle prestazioni
(versione beta )
<script src="/__/firebase/8.10.1/firebase-performance.js"></script>
Banca dati in tempo reale
<script src="/__/firebase/8.10.1/firebase-database.js"></script>
Configurazione remota
(versione beta )
<script src="/__/firebase/8.10.1/firebase-remote-config.js"></script>

Per un'esperienza ottimale utilizzando Remote Config, aggiungi anche Firebase SDK for Analytics.

SDK JavaScript di Firebase
(intero SDK)
<script src="/__/firebase/8.10.1/firebase.js"></script>

Aiutanti di autenticazione

Firebase Authentication utilizza lo spazio dei nomi riservato per fornire JavaScript e HTML speciali per completare l'autenticazione con i provider tramite OAuth. Ciò consente a ciascun progetto Firebase di avere un sottodominio Firebase univoco, aumentando la sicurezza dell'autenticazione Firebase.

Inoltre, ciò ti consente di utilizzare il tuo dominio personalizzato per l'opzione authDomain di firebase.initializeApp() . Se configuri un dominio personalizzato per Firebase Hosting, puoi anche specificare quel dominio personalizzato (invece del sottodominio web.app o firebaseapp.com ) durante l'inizializzazione degli SDK Firebase.

URL riservati e operatori del servizio

Se stai creando un'app Web progressiva (PWA), potresti creare un service work che abbia un "fallback di navigazione" ed esegua il rendering di un URL specifico per impostazione predefinita se non corrisponde a un elenco di elementi precaricati.

Se utilizzi la libreria sw-precache , puoi aggiungere un'impostazione della whitelist di fallback di navigazione che escluda lo spazio dei nomi riservato:

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

In generale, ricorda solo che lo spazio dei nomi con doppio carattere di sottolineatura è riservato per l'utilizzo di Firebase e che non dovresti intercettare queste richieste nel tuo operatore del servizio.