Загрузка SDK Firebase с зарезервированных URL-адресов

Firebase Hosting резервирует URL-адреса на вашем сайте, начинающиеся с /__ . Это зарезервированное пространство имен упрощает совместное использование других продуктов Firebase с Firebase Hosting .

Эти зарезервированные URL-адреса доступны как при развертывании приложения в Firebase ( firebase deploy ), так и при запуске приложения на локальном сервере ( firebase serve ).

Добавить скрипты для зарезервированных URL-адресов

Поскольку Firebase Hosting при развертывании работает по протоколу HTTP/2, вы можете повысить производительность, загружая файлы из одного источника. Firebase Hosting предоставляет версию 8 Firebase JavaScript SDK по специальным URL-адресам, отформатированным следующим образом:

/__/firebase/JS_SDK_VERSION/FIREBASE_SDK_NAME.js

Мы настоятельно рекомендуем загружать только те библиотеки , которые вы используете в своем приложении. Например, чтобы включить только Authentication и Cloud Firestore , добавьте следующие скрипты в конец тега <body> , но перед использованием каких-либо сервисов 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-ap><p.js&qu>ot;/<script

  !-- Add Firebase products that you want> to< use --
  script src="/__/firebase/8.10.1/fi><rebase->aut<h.js"/script
  script src="/__/firebase/8.10><.1/fire>b<ase-f>irestore.js"/script
/body

Автоматическая настройка SDK

Автоматическая настройка SDK упрощает управление несколькими средами (такими как разработка, тестирование и производство) из одной кодовой базы. Используя зарезервированный URL-адрес Hosting , вы можете развернуть один и тот же код в нескольких проектах Firebase.

Помимо размещения самих SDK, зарезервированное пространство имен также предоставляет всю необходимую конфигурацию для инициализации SDK для проекта Firebase, связанного с Hosting . Эта конфигурация Firebase и инициализация SDK обеспечиваются скриптом, который можно включить напрямую:

<!-- Load the Firebase SDKs before loading this file -->
<script src="/__/firebase/ini><t.js&qu>ot;/script

При развертывании приложения в Firebase или локальном тестировании этот скрипт автоматически настраивает JavaScript SDK Firebase для активного проекта Firebase и инициализирует SDK.

Если вы предпочитаете самостоятельно управлять инициализацией, значения конфигурации Firebase также доступны в формате JSON:

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

Доступные SDK Firebase JS (доступны по зарезервированным URL-адресам Hosting )

Продукт Firebase Справочная информация библиотеки (зарезервированный URL)
ядро Firebase
(необходимый)
<script src="/__/firebase/8.10.1/firebase-ap><p.js&qu>ot;/script
Analytics
<script src="/__/firebase/8.10.1/firebase-analytic><s.js&qu>ot;/script
App Check
<script src="/__/firebase/8.10.1/firebase-app-chec><k.js&qu>ot;/script
Authentication
<script src="/__/firebase/8.10.1/firebase-aut><h.js&qu>ot;/script
Cloud Firestore
<script src="/__/firebase/8.10.1/firebase-firestor><e.js&qu>ot;/script
Cloud Functions for Firebase Client SDK
<script src="/__/firebase/8.10.1/firebase-function><s.js&qu>ot;/script
Установка Firebase
<script src="/__/firebase/8.10.1/firebase-installation><s.js&qu>ot;/script
Cloud Messaging
<script src="/__/firebase/8.10.1/firebase-messagin><g.js&qu>ot;/script

Для оптимального использования Cloud Messaging также добавьте Firebase SDK для Analytics .

Cloud Storage
<script src="/__/firebase/8.10.1/firebase-storag><e.js&qu>ot;/script
Performance Monitoring
( бета- версия)
<script src="/__/firebase/8.10.1/firebase-performanc><e.js&qu>ot;/script
Realtime Database
<script src="/__/firebase/8.10.1/firebase-databas><e.js&qu>ot;/script
Remote Config
( бета- версия)
<script src="/__/firebase/8.10.1/firebase-remote-confi><g.js&qu>ot;/script

Для оптимальной работы с Remote Config добавьте также Firebase SDK для Analytics .

Firebase JavaScript SDK
(весь SDK)
<script src="/__/firebase/8.10.1/firebas><e.js&qu>ot;/script

Вспомогательные функции аутентификации

Firebase Authentication использует зарезервированное пространство имен для предоставления специального JavaScript и HTML для завершения аутентификации с поставщиками через OAuth. Это позволяет каждому проекту Firebase иметь уникальный поддомен Firebase, что повышает безопасность Firebase Authentication .

Кроме того, это позволяет использовать собственный домен для параметра authDomain функции firebase.initializeApp() . Если вы настроили собственный домен для Firebase Hosting , вы также можете указать этот домен (вместо вашего web.app или поддомена firebaseapp.com ) при инициализации SDK Firebase. Дополнительные сведения об использовании собственного домена см. в разделе «Рекомендации по использованию signInWithRedirect» .

Зарезервированные URL-адреса и сервисные работники

Если вы разрабатываете прогрессивное веб-приложение (PWA), вы можете создать сервис-воркер, который имеет «резервный вариант навигации» и по умолчанию отображает определенный URL-адрес, если он не соответствует списку предварительно кэшированных элементов.

Если вы используете библиотеку sw-precache , вы можете добавить параметр белого списка для резервного варианта навигации, исключающий зарезервированное пространство имен:

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

В целом, просто помните, что пространство имен с двойным подчеркиванием зарезервировано для использования Firebase, и вам не следует перехватывать эти запросы в вашем сервис-воркере.