예약된 URL에서 Firebase SDK 로드

Firebase Hosting은(는) 사이트에서 /__(으)로 시작하는 URL을 예약합니다. 이 예약된 네임스페이스를 통해 다른 Firebase 제품을 Firebase Hosting

이 예약된 URL은 Firebase로 배포하거나(firebase deploy) 로컬 서버에서 앱을 실행하는 경우(firebase serve)에 모두 사용할 수 있습니다.

예약된 URL에 스크립트 추가

Firebase Hosting는 배포 시 HTTP/2를 통해 제공되므로 로드 성능을 향상할 수 있습니다 Firebase Hosting회 제공 다음과 같은 형식의 특수 URL에서 Firebase JavaScript SDK 버전 8을 다운로드합니다.

/__/firebase/JS_SDK_VERSION/FIREBASE_SDK_NAME.js

라이브러리만 로드하는 것이 좋습니다. 확인할 수 있습니다. 예를 들어 AuthenticationCloud 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 구성을 통해 단일 코드베이스에서 개발, 스테이징, 프로덕션 등의 여러 환경을 쉽게 관리할 수 있습니다. Kubernetes의 예약된 Hosting URL이 있으므로 동일한 코드를 여러 Firebase에 배포할 수 있습니다. 살펴보겠습니다

예약된 네임스페이스는 SDK 자체를 호스팅할 뿐 아니라 Firebase용 SDK를 초기화하는 데 필요한 모든 구성이 Hosting 사이트와 연결된 프로젝트입니다. 이 Firebase 구성 및 SDK 초기화는 직접 포함할 수 있는 스크립트로 제공됩니다.

<!-- Load the Firebase SDKs before loading this file -->
<script src="/__/firebase/init.js"></script>

Firebase에 배포하거나 로컬에서 앱을 테스트할 때 이 스크립트가 자동으로 Firebase JavaScript SDK를 활성화된 Firebase 프로젝트를 호출하고 SDK를 초기화합니다.

초기화를 직접 제어하려는 경우 JSON 형식의 Firebase 구성 값을 사용할 수도 있습니다.

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

사용 가능한 Firebase JS SDK (예약된 Hosting URL에서 추가)

Firebase 제품 라이브러리 참조(예약된 URL)
Firebase Core
(필수)
<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 드림
(베타 출시 버전)
<script src="/__/firebase/8.10.1/firebase-performance.js"></script>
Realtime Database
<script src="/__/firebase/8.10.1/firebase-database.js"></script>
Remote Config 드림
(베타 출시 버전)
<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을 API 제공업체를 사용할 수 있습니다 이렇게 하면 각 Firebase 프로젝트에 고유한 Firebase 하위 도메인으로 Firebase Authentication의 보안을 강화합니다.

또한 firebase.initializeApp()authDomain 옵션에 커스텀 도메인을 사용할 수 있습니다. 만약 커스텀 도메인 구성 에 대해 Firebase Hosting의 경우 해당 맞춤 도메인 (대신 하위 도메인(web.app 또는 firebaseapp.com 하위 도메인)을 초기화합니다. 지원합니다 자세한 내용은 signInWithRedirect 사용 권장사항 참조하세요.

예약된 URL 및 서비스 워커

프로그레시브 웹 앱(PWA)을 개발하는 경우 미리 캐시된 항목 목록과 일치하지 않을 때 특정 URL을 기본적으로 렌더링하는 '탐색 대체' 기능을 가진 서비스 워커를 만들 수 있습니다.

sw-precache 라이브러리를 사용하는 경우 예약된 네임스페이스를 제외하는 탐색 대체 허용 목록 설정을 추가할 수 있습니다.

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

일반적으로 이중 밑줄 네임스페이스는 Firebase용으로 예약되므로 서비스 워커에서 이러한 요청을 가로채서는 안 된다는 점을 유의하시기 바랍니다.