Tải Firebase SDK từ các URL đặt trước

Firebase Hosting dự trữ URL trong trang web của bạn bắt đầu bằng /__. Không gian tên dành riêng này giúp bạn dễ dàng sử dụng các sản phẩm khác của Firebase cùng với Firebase Hosting.

Các URL dành riêng này có sẵn khi bạn triển khai cho Firebase (firebase deploy) hoặc khi bạn chạy ứng dụng trên một máy chủ cục bộ (firebase serve).

Thêm tập lệnh cho các URL được đặt trước

Firebase Hosting được phân phát qua HTTP/2 khi triển khai, nên bạn có thể tăng hiệu suất bằng cách tải các tệp từ cùng một nguồn gốc. Firebase Hosting cung cấp phiên bản 8 của SDK Firebase JavaScript từ các URL đặc biệt có định dạng như sau:

/__/firebase/JS_SDK_VERSION/FIREBASE_SDK_NAME.js

Bạn nên chỉ tải những thư viện mà bạn sử dụng trong ứng dụng của mình. Ví dụ: để chỉ thêm AuthenticationCloud Firestore, hãy thêm các tập lệnh sau vào cuối thẻ <body>, nhưng trước khi bạn sử dụng bất kỳ dịch vụ nào của 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>

Tự động định cấu hình SDK

Cấu hình SDK tự động giúp bạn dễ dàng quản lý nhiều môi trường (chẳng hạn như môi trường phát triển, dàn dựng và sản xuất) từ một cơ sở mã duy nhất. Bằng cách dựa vào URL Hosting được dành riêng, bạn có thể triển khai cùng một mã cho nhiều dự án Firebase.

Ngoài việc lưu trữ chính các SDK, không gian tên dành riêng này cũng cung cấp tất cả cấu hình cần thiết để khởi chạy SDK cho dự án Firebase được liên kết với trang web Hosting. Cấu hình Firebase và quá trình khởi chạy SDK này được cung cấp bởi một tập lệnh mà bạn có thể đưa trực tiếp vào:

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

Khi bạn triển khai cho Firebase hoặc kiểm thử ứng dụng cục bộ, tập lệnh này sẽ tự động định cấu hình SDK Firebase JavaScript cho dự án Firebase đang hoạt động và khởi động SDK.

Nếu bạn muốn tự kiểm soát quá trình khởi chạy, các giá trị cấu hình Firebase cũng có ở dạng JSON:

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

Các SDK Firebase JS hiện có (từ các URL Hosting dành riêng)

Sản phẩm Firebase Tài liệu tham khảo về thư viện (URL dành riêng)
Firebase core
(bắt buộc)
<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 lượt cài đặt
<script src="/__/firebase/8.10.1/firebase-installations.js"></script>
Cloud Messaging
<script src="/__/firebase/8.10.1/firebase-messaging.js"></script>

Để có trải nghiệm tối ưu khi sử dụng Cloud Messaging, hãy thêm Firebase SDK cho Analytics.

Cloud Storage
<script src="/__/firebase/8.10.1/firebase-storage.js"></script>
Performance Monitoring
(bản phát hành 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
(bản phát hành beta)
<script src="/__/firebase/8.10.1/firebase-remote-config.js"></script>

Để có trải nghiệm tối ưu khi sử dụng Remote Config, hãy thêm Firebase SDK cho Analytics.

Firebase JavaScript SDK
(toàn bộ SDK)
<script src="/__/firebase/8.10.1/firebase.js"></script>

Trợ giúp xác thực

Firebase Authentication sử dụng không gian tên dành riêng để cung cấp JavaScript và HTML đặc biệt nhằm hoàn tất quy trình xác thực với các nhà cung cấp thông qua OAuth. Điều này cho phép mỗi dự án Firebase có một miền phụ Firebase riêng biệt, giúp tăng cường tính bảo mật của Firebase Authentication.

Ngoài ra, bạn có thể sử dụng miền tuỳ chỉnh của riêng mình cho lựa chọn authDomain của firebase.initializeApp(). Nếu định cấu hình một miền tuỳ chỉnh cho Firebase Hosting, thì bạn cũng có thể chỉ định miền tuỳ chỉnh đó (thay vì miền phụ web.app hoặc firebaseapp.com) khi khởi chạy Firebase SDK. Hãy xem bài viết Các phương pháp hay nhất để sử dụng signInWithRedirect để biết thêm thông tin về cách sử dụng miền tuỳ chỉnh.

URL và trình chạy dịch vụ được đặt trước

Nếu đang tạo một Ứng dụng web tiến bộ (PWA), bạn có thể tạo một trình chạy dịch vụ có "phương án dự phòng điều hướng" và kết xuất một URL cụ thể theo mặc định nếu URL đó không khớp với danh sách các mục được lưu vào bộ nhớ đệm trước.

Nếu đang sử dụng thư viện sw-precache, bạn có thể thêm một chế độ cài đặt danh sách cho phép dự phòng điều hướng để loại trừ không gian tên dành riêng:

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

Nhìn chung, bạn chỉ cần nhớ rằng vùng chứa tên có dấu gạch dưới kép được dành riêng cho việc sử dụng Firebase và bạn không nên chặn các yêu cầu này trong worker dịch vụ của mình.