Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. 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.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)

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>
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>

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

Firebase JavaScript SDK
(整個 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 使用而保留的,並且您不應在服務工作線程中攔截這些請求。