了解 2023 年 Google I/O 大会上介绍的 Firebase 亮点。了解详情

從保留的 URL 加載 Firebase SDK

Firebase 託管在您的網站中保留以/__開頭的網址。這個保留的命名空間讓其他 Firebase 產品更容易與 Firebase 託管一起使用。

當您部署到 Firebase ( firebase deploy ) 或在本地服務器上運行您的應用程序 ( firebase serve ) 時,這些保留的 URL 都可用。

為保留的 URL 添加腳本

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

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

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

當您部署到 Firebase 或在本地測試您的應用程序時,此腳本會自動為活動的 Firebase 項目配置 Firebase JavaScript SDK 並初始化 SDK。

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

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

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

火力地堡產品庫參考(保留 URL)
火力地堡核心
(必需的)
<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 客戶端 SDK 的雲函數
<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>

為了獲得使用雲消息傳遞的最佳體驗,還添加了 Firebase SDK for 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 for Analytics。

Firebase JavaScript 開發工具包
(整個SDK)
<script src="/__/firebase/8.10.1/firebase.js"></script>

授權助手

Firebase 身份驗證使用保留的命名空間提供特殊的 JavaScript 和 HTML 以通過 OAuth 完成與提供者的身份驗證。這允許每個 Firebase 項目都有一個唯一的 Firebase 子域,從而提高 Firebase 身份驗證的安全性。

此外,這允許您將自己的自定義域用於firebase.initializeApp()authDomain選項。如果您為 Firebase 託管配置自定義域,則還可以在初始化 Firebase SDK 時指定該自定義域(而不是您的web.appfirebaseapp.com子域)。

保留的 URL 和服務人員

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

如果您使用的是sw-precache庫,則可以添加排除保留命名空間的導航回退白名單設置:

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

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