Firebase Hosting會保留網站中以 /__
開頭的網址。這個保留的命名空間可讓您更輕鬆地搭配使用其他 Firebase 產品和 Firebase Hosting。
無論是部署至 Firebase (firebase deploy
),還是在本機伺服器上執行應用程式 (firebase serve
),都可以使用這些保留網址。
為保留網址新增指令碼
由於 Firebase Hosting 是透過 HTTP/2 部署,因此您可以從相同來源載入檔案,藉此提升效能。Firebase Hosting 會透過特殊網址 (格式如下) 提供 Firebase JavaScript SDK 的第 8 版:
/__/firebase/JS_SDK_VERSION/FIREBASE_SDK_NAME.js
強烈建議您只載入應用程式中使用的程式庫。舉例來說,如要只加入 Authentication 和 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 設定功能可讓您透過單一程式碼集,輕鬆管理多個環境 (例如開發、測試和正式環境)。只要使用預留的 Hosting 網址,就能將相同程式碼部署至多個 Firebase 專案。
除了代管 SDK 本身,保留的命名空間也會提供初始化 SDK 的所有必要設定,以用於與 Hosting 網站相關聯的 Firebase 專案。您可以直接加入指令碼,取得 Firebase 設定和 SDK 初始化:
<!-- Load the Firebase SDKs before loading this file -->
<script src="/__/firebase/init.js"></script>
當您部署至 Firebase 或在本機測試應用程式時,這個指令碼會自動為FirebaseJavaScript現用 Firebase 專案設定 SDK,並初始化 SDK。
如要自行控管初始化作業,也可以使用 JSON 格式的 Firebase 設定值:
fetch('/__/firebase/init.json').then(async response => {
firebase.initializeApp(await response.json());
});
可用的 Firebase JS SDK (來自預留的 Hosting 網址)
Firebase 產品 | 程式庫參照 (保留網址) |
---|---|
Firebase 核心 (必要) |
<script src="/__/firebase/8.10.1/firebase-app.js"></script> |
Analytics | <script src="/__/firebase/8.10.1/firebase-analytics.js"></script> |
App Check | <script src="/__/firebase/8.10.1/firebase-app-check.js"></script> |
Authentication | <script src="/__/firebase/8.10.1/firebase-auth.js"></script> |
Cloud Firestore | <script src="/__/firebase/8.10.1/firebase-firestore.js"></script> |
Cloud Functions for Firebase Client SDK | <script src="/__/firebase/8.10.1/firebase-functions.js"></script> |
Firebase 安裝次數 | <script src="/__/firebase/8.10.1/firebase-installations.js"></script> |
Cloud Messaging | <script src="/__/firebase/8.10.1/firebase-messaging.js"></script> 如要獲得最佳 Cloud Messaging 使用體驗,請一併新增 Analytics 專用的 Firebase SDK。 |
Cloud Storage | <script src="/__/firebase/8.10.1/firebase-storage.js"></script> |
Performance Monitoring
(Beta 版) |
<script src="/__/firebase/8.10.1/firebase-performance.js"></script> |
Realtime Database | <script src="/__/firebase/8.10.1/firebase-database.js"></script> |
Remote Config
(Beta 版) |
<script src="/__/firebase/8.10.1/firebase-remote-config.js"></script> 如要獲得最佳 Remote Config 使用體驗,請一併新增 Analytics 專用的 Firebase SDK。 |
Firebase JavaScript SDK (整個 SDK) |
<script src="/__/firebase/8.10.1/firebase.js"></script> |
驗證輔助程式
Firebase Authentication 會使用保留的命名空間提供特殊的 JavaScript 和 HTML,透過 OAuth 完成與供應商的驗證。這樣一來,每個 Firebase 專案都會有專屬的 Firebase 子網域,進而提升 Firebase Authentication 的安全性。
此外,您也可以為� authDomain
選項使用自己的自訂網域。firebase.initializeApp()
如果您為 Firebase Hosting設定自訂網域,初始化 Firebase SDK 時,也可以指定該自訂網域 (而非 web.app
或 firebaseapp.com
子網域)。如要進一步瞭解如何使用自訂網域,請參閱「使用 signInWithRedirect 的最佳做法」。
保留網址和 Service Worker
如果您正在建構漸進式網頁應用程式 (PWA),可能會建立具有「導覽後備」的 Service Worker,如果該 Service Worker 與預先快取項目清單不符,則預設會轉譯特定網址。
如果您使用 sw-precache 程式庫,可以新增導覽後備許可清單設定,排除保留的命名空間:
{
navigateFallbackWhitelist: [/^(?!\/__).*/]
}
一般而言,請記住雙底線命名空間是 Firebase 專用,您不應在服務工作人員中攔截這些要求。