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.app
或firebaseapp.com
子域)。
保留的 URL 和服務人員
如果您正在構建漸進式 Web 應用程序 (PWA),您可能會創建一個具有“導航回退”的服務工作者,如果它與預緩存項列表不匹配,則默認呈現特定 URL。
如果您使用的是sw-precache庫,則可以添加排除保留命名空間的導航回退白名單設置:
{
navigateFallbackWhitelist: [/^(?!\/__).*/]
}
通常,請記住雙下劃線命名空間是為 Firebase 使用保留的,您不應該在 service worker 中攔截這些請求。