预留网址

Firebase 托管会在您的网站中预留以 /__ 开头的网址。这个预留的命名空间可让您更轻松地配合 Firebase 托管使用其他 Firebase 功能。这些预留的网址可以在部署时以及在本地运行 firebase serve 时提供。

Firebase SDK

由于 Firebase 托管在部署后通过 HTTP/2 传输内容,您可以从同一来源加载文件,以提高性能。Firebase 托管通过特殊格式的网址提供所有版本的 Firebase JS SDK,具体格式如下:

/__/firebase/{version}/{sdk-file}.js

我们强烈建议您仅加载您使用的 SDK 部分。例如,如果您要同时使用 Firebase 身份验证和 Cloud Storage,则只需要添加以下脚本:

<script src="/__/firebase/4.12.1/firebase-app.js"></script>
<script src="/__/firebase/4.12.1/firebase-auth.js"></script>
<script src="/__/firebase/4.12.1/firebase-storage.js"></script>

所有版本的 Firebase SDK 都以这种方式托管,新版本一经发布即可使用。

SDK 自动配置

除了托管 SDK 自身之外,预留的命名空间还提供了与 Firebase 托管网站相关联的项目进行 SDK 初始化所需的所有配置。其以脚本形式提供,可供您直接添加:

<!-- load Firebase SDK before loading this file -->
<script src="/__/firebase/init.js"></script>

该脚本会自动配置 Firebase SDK 的默认应用。如果您喜欢自己控制初始化,则也有 JSON 形式的配置值可供您使用:

fetch('/__/firebase/init.json').then(response => {
  firebase.initializeApp(response.json());
});

自动 SDK 配置让您可以通过单个代码库轻松管理多个环境(如开发、临时和生产)。依靠预留的网址,您可以将相同的代码部署到多个 Firebase 项目。

Auth 辅助函数

Firebase 身份验证使用预留的命名空间来提供特殊的 JavaScript 和 HTML,以通过 OAuth 帮助提供方完成身份验证。这样我们的每位客户都能拥有一个属于自己项目的网域,从而增加 Firebase 身份认证的安全性。

此外,您还可以使用自己的自定义域名作为 firebase.initializeApp()authDomain 选项。如果您已为 Firebase 托管配置了自定义域名,则可以在初始化 Firebase SDK 时指定该自定义域而非 firebaseapp.com 子域。

预留的网址和 Service Worker

如果您正在构建渐进式网页应用,则可创建一个具有“导航后备网址”功能的 Service Worker;Service Worker 在网址与预缓存条目列表不匹配时会默认呈现指定的网址。您必须停用 /__ 命名空间的后备网址才能让 Firebase 托管正常工作

如果您使用的是 sw-precache 库,则可以添加相应的导航后备网址白名单设置,以排除预留的命名空间:

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

总之,您要记住,双下划线命名空间是预留给 Firebase 使用的,您不应在 Service Worker 中拦截这些请求。

发送以下问题的反馈:

此网页
需要帮助?请访问我们的支持页面