Firebase 託管在您的網站中保留以/__
開頭的 URL。透過此保留的命名空間,可以更輕鬆地將其他 Firebase 產品與 Firebase 託管一起使用。
當您部署到 Firebase ( firebase deploy
) 或在本機伺服器上執行應用程式 ( firebase serve
) 時,這些保留的 URL 都可用。
為保留的 URL 新增腳本
由於 Firebase 託管在部署時透過 HTTP/2 提供服務,因此您可以透過載入來自相同來源的檔案來提高效能。 Firebase Hosting 透過特殊的 URL 提供 Firebase JavaScript SDK 版本 8 的服務,格式如下:
/__/firebase/JS_SDK_VERSION/FIREBASE_SDK_NAME.js
我們強烈建議僅載入您在應用程式中使用的程式庫。例如,若要僅包含驗證和 Cloud Firestore,請在使用任何 Firebase 服務之前將下列腳本新增至<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.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> |
雲端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> 為了獲得使用遠端配置的最佳體驗,也請新增 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.app
或firebaseapp.com
子網域)。
預留 URL 和 Service Worker
如果您正在建立漸進式 Web 應用程式 (PWA),則可以建立具有「導航回退」功能的 Service Worker,並在預設情況下呈現特定 URL(如果它與預先快取項目清單不符)。
如果您使用sw-precache庫,則可以新增排除保留命名空間的導航回退白名單設定:
{
navigateFallbackWhitelist: [/^(?!\/__).*/]
}
一般來說,只需記住雙底線命名空間是為 Firebase 使用而保留的,並且您不應在 Service Worker 中攔截這些請求。