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

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

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

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

Поскольку Firebase Hosting при развертывании обслуживается через HTTP/2, вы можете повысить производительность, загружая файлы из одного и того же источника. Firebase Hosting обслуживает все версии 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-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>

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

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

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

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

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

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

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

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

Продукт Firebase Ссылка на библиотеку (зарезервированный URL)
Ядро Firebase
(обязательный)
<script src="/__/firebase/8.10.1/firebase-app.js"></script>
Аналитика
<script src="/__/firebase/8.10.1/firebase-analytics.js"></script>
Проверка приложения
<script src="/__/firebase/8.10.1/firebase-app-check.js"></script>
Аутентификация
<script src="/__/firebase/8.10.1/firebase-auth.js"></script>
Облако Firestore
<script src="/__/firebase/8.10.1/firebase-firestore.js"></script>
Облачные функции для Firebase Client SDK
<script src="/__/firebase/8.10.1/firebase-functions.js"></script>
Облачный обмен сообщениями
<script src="/__/firebase/8.10.1/firebase-messaging.js"></script>

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

Облачное хранилище
<script src="/__/firebase/8.10.1/firebase-storage.js"></script>
Мониторинг производительности
( бета- версия)
<script src="/__/firebase/8.10.1/firebase-performance.js"></script>
База данных реального времени
<script src="/__/firebase/8.10.1/firebase-database.js"></script>
Удаленная конфигурация
( бета- версия)
<script src="/__/firebase/8.10.1/firebase-remote-config.js"></script>

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

SDK Firebase для JavaScript
(весь SDK)
<script src="/__/firebase/8.10.1/firebase.js"></script>

Помощники авторизации

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

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

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

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

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

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

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