O Firebase Hosting reserva URLs em seu site começando com /__
. Esse namespace reservado facilita o uso de outros produtos Firebase junto com o Firebase Hosting.
Esses URLs reservados estão disponíveis quando você implanta no Firebase ( firebase deploy
) ou quando executa seu aplicativo em um servidor local ( firebase serve
).
Adicionar scripts para URLs reservados
Como o Firebase Hosting é servido por HTTP/2 quando implantado, você pode aumentar o desempenho carregando arquivos da mesma origem. O Firebase Hosting oferece a versão 8 do Firebase JavaScript SDK a partir de URLs especiais formatados da seguinte forma:
/__/firebase/JS_SDK_VERSION/FIREBASE_SDK_NAME.js
Recomendamos carregar apenas as bibliotecas que você usa em seu aplicativo. Por exemplo, para incluir apenas Autenticação e Cloud Firestore, adicione os seguintes scripts na parte inferior de sua tag <body>
, mas antes de usar qualquer serviço do 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>
Configuração automática do SDK
A configuração automática do SDK facilita o gerenciamento de vários ambientes (como desenvolvimento, preparação e produção) a partir de uma única base de código. Ao confiar no URL de hospedagem reservado, você pode implantar o mesmo código em vários projetos do Firebase.
Além de hospedar os próprios SDKs, o namespace reservado também fornece toda a configuração necessária para inicializar o SDK para o projeto Firebase associado ao site de hospedagem. Essa configuração do Firebase e a inicialização do SDK são fornecidas por um script que você pode incluir diretamente:
<!-- Load the Firebase SDKs before loading this file -->
<script src="/__/firebase/init.js"></script>
Quando você implanta no Firebase ou testa seu aplicativo localmente, esse script configura automaticamente o Firebase JavaScript SDK para o projeto ativo do Firebase e inicializa o SDK.
Se você preferir controlar a inicialização sozinho, os valores de configuração do Firebase também estão disponíveis no formato JSON:
fetch('/__/firebase/init.json').then(async response => {
firebase.initializeApp(await response.json());
});
SDKs Firebase JS disponíveis (de URLs de hospedagem reservados)
Produto Firebase | Referência da biblioteca (URL reservada) |
---|---|
Núcleo do Firebase (requeridos) | <script src="/__/firebase/8.10.1/firebase-app.js"></script> |
Análise | <script src="/__/firebase/8.10.1/firebase-analytics.js"></script> |
Verificação de aplicativo | <script src="/__/firebase/8.10.1/firebase-app-check.js"></script> |
Autenticação | <script src="/__/firebase/8.10.1/firebase-auth.js"></script> |
Cloud Firestore | <script src="/__/firebase/8.10.1/firebase-firestore.js"></script> |
Cloud Functions para Firebase Client SDK | <script src="/__/firebase/8.10.1/firebase-functions.js"></script> |
Instalações do Firebase | <script src="/__/firebase/8.10.1/firebase-installations.js"></script> |
Mensagens na nuvem | <script src="/__/firebase/8.10.1/firebase-messaging.js"></script> Para uma experiência ideal usando o Cloud Messaging, adicione também o Firebase SDK for Analytics. |
Armazenamento na núvem | <script src="/__/firebase/8.10.1/firebase-storage.js"></script> |
Monitoramento de desempenho ( versão beta ) | <script src="/__/firebase/8.10.1/firebase-performance.js"></script> |
banco de dados em tempo real | <script src="/__/firebase/8.10.1/firebase-database.js"></script> |
Configuração Remota ( versão beta ) | <script src="/__/firebase/8.10.1/firebase-remote-config.js"></script> Para uma experiência ideal usando o Remote Config, adicione também o Firebase SDK for Analytics. |
SDK do Firebase para JavaScript (SDK inteiro) | <script src="/__/firebase/8.10.1/firebase.js"></script> |
Auxiliares de autenticação
O Firebase Authentication usa o namespace reservado para fornecer JavaScript e HTML especiais para concluir a autenticação com provedores via OAuth. Isso permite que cada projeto do Firebase tenha um subdomínio exclusivo do Firebase, aumentando a segurança do Firebase Authentication.
Além disso, isso permite que você use seu próprio domínio personalizado para a opção authDomain
de firebase.initializeApp firebase.initializeApp()
. Se você configurar um domínio personalizado para o Firebase Hosting, também poderá especificar esse domínio personalizado (em vez de seu subdomínio web.app
ou firebaseapp.com
) ao inicializar os SDKs do Firebase.
URLs reservados e service workers
Se você estiver criando um Progressive Web App (PWA), poderá criar um service worker que tenha um "fallback de navegação" e renderize uma URL específica por padrão se ela não corresponder a uma lista de itens pré-armazenados em cache.
Se você estiver usando a biblioteca sw-precache , poderá adicionar uma configuração de lista de permissões de fallback de navegação que exclua o namespace reservado:
{
navigateFallbackWhitelist: [/^(?!\/__).*/]
}
Em geral, lembre-se de que o namespace de sublinhado duplo é reservado para uso do Firebase e que você não deve interceptar essas solicitações em seu service worker.