Check out what’s new from Firebase@ Google I/O 2021, and join our alpha program for early access to the new Remote Config personalization feature. Learn more

從保留的 URL 加載 Firebase SDK

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

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

為保留的 URL 添加腳本

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

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

  <!-- Add Firebase products that you want to use -->
  <script src="/__/firebase/8.6.8/firebase-auth.js"></script>
  <script src="/__/firebase/8.6.8/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)

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

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

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

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

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

身份驗證助手

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

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

保留的 URL 和 Service Worker

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

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

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

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