Хостинг Firebase резервирует URL-адреса вашего сайта, начинающиеся с /__
. Это зарезервированное пространство имен упрощает использование других продуктов Firebase вместе с хостингом Firebase.
Эти зарезервированные URL-адреса доступны как при развертывании в Firebase ( firebase deploy
), так и при запуске приложения на локальном сервере ( firebase serve
).
Добавьте скрипты для зарезервированных URL-адресов
Поскольку при развертывании хостинг Firebase обслуживается через HTTP/2, вы можете повысить производительность, загружая файлы из того же источника. Хостинг Firebase обслуживает версию 8 Firebase JavaScript SDK по специальным URL-адресам, отформатированным следующим образом:
/__/firebase/JS_SDK_VERSION/FIREBASE_SDK_NAME.js
Мы настоятельно рекомендуем загружать только те библиотеки , которые вы используете в своем приложении. Например, чтобы включить только аутентификацию и 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, связанного с сайтом хостинга. Эта конфигурация Firebase и инициализация SDK предоставляются сценарием, который вы можете включить напрямую:
<!-- Load the Firebase SDKs before loading this file -->
<script src="/__/firebase/init.js"></script>
Когда вы развертываете приложение в Firebase или тестируете свое приложение локально, этот скрипт автоматически настраивает Firebase JavaScript SDK для активного проекта 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> |
Облачный пожарный магазин | <script src="/__/firebase/8.10.1/firebase-firestore.js"></script> |
Облачные функции для клиентского SDK Firebase | <script src="/__/firebase/8.10.1/firebase-functions.js"></script> |
Установки Firebase | <script src="/__/firebase/8.10.1/firebase-installations.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. |
Firebase JavaScript SDK (весь SDK) | <script src="/__/firebase/8.10.1/firebase.js"></script> |
Помощники аутентификации
Аутентификация Firebase использует зарезервированное пространство имен для предоставления специального JavaScript и HTML для завершения аутентификации у поставщиков через OAuth. Это позволяет каждому проекту Firebase иметь уникальный поддомен Firebase, повышая безопасность аутентификации Firebase.
Кроме того, это позволяет вам использовать собственный домен для опции authDomain
в firebase.initializeApp()
. Если вы настраиваете личный домен для хостинга Firebase, вы также можете указать этот личный домен (вместо субдомена web.app
или firebaseapp.com
) при инициализации Firebase SDK.
Зарезервированные URL-адреса и сервис-воркеры
Если вы создаете прогрессивное веб-приложение (PWA), вы можете создать сервис-воркера, который имеет «резервный вариант навигации» и по умолчанию отображает определенный URL-адрес, если он не соответствует списку предварительно кэшированных элементов.
Если вы используете библиотеку sw-precache , вы можете добавить настройку резервного белого списка навигации, исключающую зарезервированное пространство имен:
{
navigateFallbackWhitelist: [/^(?!\/__).*/]
}
В общем, просто помните, что пространство имен с двойным подчеркиванием зарезервировано для использования Firebase, и вам не следует перехватывать эти запросы в своем сервис-воркере.