從保留的 URL 加載 Firebase SDK

火力地堡Hosting保留網址在您的網站開始/__ 。這個保留的命名空間可以更輕鬆地將其他 Firebase 產品與 Firebase 託管一起使用。

這些保留的網址功能都在部署到火力地堡( firebase deploy ),或者當你在本地服務器上運行你的應用程序( firebase serve )。

為保留的 URL 添加腳本

由於 Firebase 託管在部署時通過 HTTP/2 提供服務,因此您可以通過加載來自同一來源的文件來提高性能。 Firebase 託管從格式如下的特殊 URL 提供所有版本的 Firebase JavaScript SDK:

/__/firebase/JS_SDK_VERSION/FIREBASE_SDK_NAME.js

我們強烈建議只加載的,你在你的應用程序中使用。例如,只包括認證和雲公司的FireStore,添加下面的腳本到您的底部<body>標籤,但你使用任何火力地堡服務之前:

<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.0/firebase-app.js"></script>

  <!-- Add Firebase products that you want to use -->
  <script src="/__/firebase/8.10.0/firebase-auth.js"></script>
  <script src="/__/firebase/8.10.0/firebase-firestore.js"></script>
</body>

SDK自動配置

自動 SDK 配置使從單個代碼庫管理多個環境(例如開發、暫存和生產)變得容易。通過依賴保留的託管 URL,您可以將相同的代碼部署到多個 Firebase 項目。

除了託管 SDK 本身之外,保留的命名空間還提供為與託管站點關聯的 Firebase 項目初始化 SDK 所需的所有配置。此 Firebase 配置和 SDK 初始化由您可以直接包含的腳本提供:

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

當你部署到火力地堡或本地測試您的應用程序,該腳本會自動配置火力地堡的JavaScript SDK為主動火力地堡項目並初始化SDK。

如果您更喜歡自己控制初始化,Firebase 配置值也可以 JSON 形式提供:

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

可用的 Firebase JS SDK(來自保留的託管 URL)

Firebase 產品圖書館參考(保留網址)
Firebase 核心
(必需的)
<script src="/__/firebase/8.10.0/firebase-app.js"></script>
分析
<script src="/__/firebase/8.10.0/firebase-analytics.js"></script>
應用檢查
<script src="/__/firebase/8.10.0/firebase-app-check.js"></script>
驗證
<script src="/__/firebase/8.10.0/firebase-auth.js"></script>
雲防火牆
<script src="/__/firebase/8.10.0/firebase-firestore.js"></script>
Firebase 客戶端 SDK 的雲函數
<script src="/__/firebase/8.10.0/firebase-functions.js"></script>
雲消息
<script src="/__/firebase/8.10.0/firebase-messaging.js"></script>

為了獲得使用雲消息傳遞的最佳體驗,還需要添加 Firebase SDK for Analytics。

雲儲存
<script src="/__/firebase/8.10.0/firebase-storage.js"></script>
性能監控
(beta版)
<script src="/__/firebase/8.10.0/firebase-performance.js"></script>
實時數據庫
<script src="/__/firebase/8.10.0/firebase-database.js"></script>
遠程配置
(beta版)
<script src="/__/firebase/8.10.0/firebase-remote-config.js"></script>

為了獲得使用遠程配置的最佳體驗,還需要添加 Firebase SDK for Analytics。

Firebase JavaScript SDK
(整個SDK)
<script src="/__/firebase/8.10.0/firebase.js"></script>

身份驗證助手

火力地堡認證使用保留的命名空間提供特殊JavaScript和HTML來完成認證通過OAuth的提供商。這允許每個 Firebase 項目擁有唯一的 Firebase 子域,從而提高 Firebase 身份驗證的安全性。

此外,這使您可以使用自己的自定義域為authDomain的選項firebase.initializeApp()如果您配置自定義域的火力地堡主機,那麼你也可以指定自定義域(而不是你的web.appfirebaseapp.com初始化火力地堡的SDK時,子域)。

保留的 URL 和 Service Worker

如果您正在構建一個漸進式 Web 應用程序 (PWA),您可能會創建一個具有“導航回退”的服務工作者,如果它與預緩存項目列表不匹配,則默認呈現特定 URL。

如果您使用的是SW-預緩存庫,你可以添加一個導航後備白名單設置,排除保留的命名空間:

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

通常,請記住雙下劃線命名空間是為 Firebase 使用保留的,並且您不應在 Service Worker 中攔截這些請求。