Môi trường được hỗ trợ
SDK Firebase JavaScript được chính thức hỗ trợ trong các môi trường sau.
những môi trường mà không hỗ trợ các tính năng mà Firebase yêu cầu.Trình duyệt
| Sản phẩm của Firebase | Edge | Firefox | Chrome | Safari trên iOS | Safari |
|---|---|---|---|---|---|
| Firebase AI Logic 1 | |||||
| Analytics | |||||
| App Check | |||||
| Authentication | |||||
| Cloud Firestore | (ngoại trừ khả năng duy trì) |
(ngoại trừ khả năng duy trì nếu iOS < 10) |
|||
| Cloud Functions | |||||
| Firebase lượt cài đặt | |||||
| Cloud Messaging | (Edge 17 trở lên, ngoại trừ thiết bị di động) |
||||
| Cloud Storage | |||||
| SQL Connect | |||||
| Performance Monitoring | |||||
| Realtime Database | |||||
| Remote Config |
1 Firebase AI Logic trước đây có tên là "Vertex AI in Firebase".
Các môi trường khác
| Sản phẩm của Firebase | React Native | Node.js (18+) | Tiện ích Chrome |
Cordova |
|---|---|---|---|---|
| Firebase AI Logic 1 | ||||
| App Check | (sử dụng nhà cung cấp tuỳ chỉnh để xác thực thiết bị gốc) |
(sử dụng nhà cung cấp tuỳ chỉnh) |
||
| Analytics | ||||
| Authentication | (xem phần Ghi chú) |
(xem phần Ghi chú) |
(xem phần Ghi chú) |
(xem phần Ghi chú) |
| Cloud Firestore | (ngoại trừ khả năng duy trì) |
(ngoại trừ khả năng duy trì) |
||
| Cloud Functions | ||||
| SQL Connect | ||||
| Firebase lượt cài đặt | ||||
| Cloud Messaging | ||||
| Cloud Storage | (ngoại trừ tải lên) |
|||
| Performance Monitoring | ||||
| Realtime Database | ||||
| Remote Config |
1 Firebase AI Logic trước đây có tên là "Vertex AI in Firebase".
Polyfill
SDK Firebase JavaScript được xây dựng dựa trên các tiêu chuẩn mới nhất của nền tảng web. Một số trình duyệt và môi trường JavaScript cũ hơn không hỗ trợ tất cả các tính năng mà Firebase yêu cầu. Nếu bạn phải hỗ trợ các trình duyệt/môi trường này, thì bạn cần tải các polyfill cho phù hợp.
Các phần bên dưới xác định hầu hết các polyfill mà bạn có thể cần.
Polyfill bắt buộc
| Môi trường | Polyfill |
|---|---|
| Safari 7, 8 và 9 | ES ổn định |
| Node < 10 | ES ổn định |
Polyfill không bắt buộc
| Môi trường | Polyfill | Sản phẩm của Firebase |
|---|---|---|
|
tìm nạp |
|
|
tìm nạp |
|
|
base-64 |
|
Polyfill nên dùng
| Polyfill | Giấy phép |
|---|---|
| ES ổn định | MIT |
| tìm nạp – `cross-fetch` – phù hợp nhất với các trình duyệt cũ | MIT |
| tìm nạp – `undici` – phù hợp nhất với Node.js | MIT |
| base-64 | MIT |
Thiết lập Polyfill bắt buộc cho React Native và Expo
Đối với React Native và Expo, nếu bạn đang tải chuỗi được mã hoá base-64 lên, thì bạn cần làm như sau:
Cài đặt base-64 từ npm:
npm install base-64
Nhập decode từ base-64 và đính kèm vào phạm vi chung dưới dạng atob để
Cloud Storage có thể truy cập vào đó.
import { decode } from 'base-64';
if(typeof atob === 'undefined') {
global.atob = decode;
}
Thêm polyfill vào ứng dụng
Cách 1: (Nên dùng) Sử dụng trình đóng gói tích hợp với Babel
Nếu bạn đang sử dụng trình đóng gói, hãy tích hợp với Babel và @babel/preset-env để nhận polyfill.
Hãy sử dụng hướng dẫn thiết lập tương tác của Babel để tìm hiểu cách tích hợp Babel với trình đóng gói.
Với Babel, bạn không cần lo lắng về các polyfill chính xác cần đưa vào. Thay vào đó, bạn chỉ định các môi trường trình duyệt tối thiểu mà bạn cần hỗ trợ. Sau đó, Babel sẽ thêm các polyfill cần thiết cho bạn. Babel đảm bảo rằng các yêu cầu của bạn về khả năng hỗ trợ trình duyệt luôn được đáp ứng, ngay cả khi Firebase hoặc mã của riêng bạn bắt đầu sử dụng các tính năng ES mới.
@babel/preset-env có thông tin chi tiết về các tuỳ chọn cấu hình hiện có để chỉ định mục tiêu môi trường (tuỳ chọn targets) và thêm polyfill (tuỳ chọn useBuiltIns).
Cách 2: (Không nên dùng) Thêm polyfill theo cách thủ công
Bạn có thể thêm polyfill theo cách thủ công bằng các thư viện polyfill yêu thích (ví dụ: core-js).
import 'core-js/stable'
import 'cross-fetch/polyfill';
core-js cũng cung cấp một
tệp polyfill tất cả trong một
mà bạn có thể trực tiếp đưa vào trang HTML.
Cách này có thể là một cách thuận tiện để quản lý polyfill nếu bạn không sử dụng Babel. Tuy nhiên, bạn không nên dùng cách tất cả trong một này cho các ứng dụng chính thức vì cách này có thể sẽ bao gồm các polyfill không cần thiết, làm tăng dung lượng trang và do đó làm tăng thời gian tải trang.