Save the date - Google I/O returns May 18-20. Register to get the most out of the digital experience: Build your schedule, reserve space, participate in Q&As, earn Google Developer profile badges, and more. Register now
本頁面由 Cloud Translation API 翻譯而成。
Switch to English

從保留的URL加載Firebase SDK

Firebase Hosting在您的網站中保留以/__開頭的URL。通過保留的名稱空間,可以更輕鬆地將其他Firebase產品與Firebase託管一起使用。

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

為保留的URL添加腳本

由於Firebase Hosting在部署時是通過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.1/firebase-app.js"></script>

  <!-- Add Firebase products that you want to use -->
  <script src="/__/firebase/8.6.1/firebase-auth.js"></script>
  <script src="/__/firebase/8.6.1/firebase-firestore.js"></script>
</body>

SDK自動配置

通過自動進行SDK配置,可以輕鬆地從單個代碼庫管理多個環境(例如,開發,登台和生產)。通過保留的Hosting 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)
Firebase核心
(必需的)
<script src="/__/firebase/8.6.1/firebase-app.js"></script>
分析工具
<script src="/__/firebase/8.6.1/firebase-analytics.js"></script>
驗證第0972章
雲消防站
<script src="/__/firebase/8.6.1/firebase-firestore.js"></script>
Firebase Client SDK的雲功能
<script src="/__/firebase/8.6.1/firebase-functions.js"></script>
雲消息傳遞
<script src="/__/firebase/8.6.1/firebase-messaging.js"></script>

為了獲得使用Cloud Messaging的最佳體驗,請同時添加Firebase SDK for Analytics。

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

為了獲得使用Remote Config的最佳體驗,請同時添加Firebase SDK for Analytics。

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

驗證助手

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

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

保留的網址和服務人員

如果要構建漸進式Web應用程序(PWA),則可能會創建一個具有“導航後備”功能的服務工作者,並在默認情況下(如果它與預先緩存的項目列表不匹配)呈現特定的URL。

如果您使用的是sw-precache庫,則可以添加一個導航後備白名單設置,該設置不包括保留的名稱空間:

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

通常,請記住,雙下劃線名稱空間是為Firebase保留的,您不應在服務工作者中截獲這些請求。