Obsługiwane środowiska
Pakiet Firebase JavaScript SDK jest oficjalnie obsługiwany w tych środowiskach:
Przeglądarki
| Usługa Firebase | Edge | Firefox | Chrome | Safari na iOS | Safari |
|---|---|---|---|---|---|
| Firebase AI Logic 1 | |||||
| Analytics | |||||
| App Check | |||||
| Authentication | |||||
| Cloud Firestore | (except persistence) |
(z wyjątkiem trwałości w przypadku iOS < 10) |
|||
| Cloud Functions | |||||
| Firebase instalacje | |||||
| Cloud Messaging | (Edge 17 lub nowszy, z wyjątkiem urządzeń mobilnych) |
||||
| Cloud Storage | |||||
| Data Connect | |||||
| Performance Monitoring | |||||
| Realtime Database | |||||
| Remote Config |
1 Firebase AI Logic nosiło wcześniej nazwę „Vertex AI in Firebase”
Inne środowiska
| Usługa Firebase | React Native | Node.js (18+) | Chrome Extensions |
Cordova |
|---|---|---|---|---|
| Firebase AI Logic 1 | ||||
| App Check | (za pomocą niestandardowego dostawcy do potwierdzania autentyczności urządzenia) |
(przy użyciu dostawcy niestandardowego) |
||
| Analytics | ||||
| Authentication | (patrz Uwaga) |
(patrz Uwaga) |
(patrz Uwaga) |
(patrz Uwaga) |
| Cloud Firestore | (except persistence) |
(except persistence) |
||
| Cloud Functions | ||||
| Data Connect | ||||
| Firebase instalacje | ||||
| Cloud Messaging | ||||
| Cloud Storage | (z wyjątkiem przesyłania) |
|||
| Performance Monitoring | ||||
| Realtime Database | ||||
| Remote Config |
1 Firebase AI Logic nosiło wcześniej nazwę „Vertex AI in Firebase”
Kody polyfill
Pakiet SDK Firebase JavaScript jest oparty na najnowszych standardach platformy internetowej. Niektóre starsze przeglądarki i środowiska JavaScript nie obsługują wszystkich funkcji wymaganych przez Firebase. Jeśli musisz obsługiwać te przeglądarki lub środowiska, musisz odpowiednio wczytać polyfille.
W sekcjach poniżej znajdziesz większość potrzebnych Ci polyfilli.
Wymagane polyfille
| Środowiska | Polyfill |
|---|---|
| Safari 7, 8 i 9 | ES Stable |
| Węzeł < 10 | ES Stable |
Opcjonalne polyfille
| Środowiska | Polyfill | Usługi Firebase |
|---|---|---|
|
fetch |
|
|
fetch |
|
|
base-64 |
|
Sugerowane polyfille
| Polyfill | Licencja |
|---|---|
| ES Stabilna | MIT |
| fetch – `cross-fetch` – najlepsza opcja w przypadku starszych przeglądarek | MIT |
| fetch – `undici` – najlepsza opcja w przypadku Node.js | MIT |
| base-64 | MIT |
Wymagana konfiguracja Polyfill dla React Native i Expo
Jeśli w przypadku React Native i Expo przesyłasz ciąg tekstowy zakodowany w formacie Base64, musisz wykonać te czynności:
Zainstaluj base-64 z npm:
npm install base-64
Zaimportuj decode z base-64 i dołącz go do zakresu globalnego jako atob, aby Cloud Storage mógł uzyskać do niego dostęp.
import { decode } from 'base-64';
if(typeof atob === 'undefined') {
global.atob = decode;
}
Dodawanie polyfilli do aplikacji
Opcja 1: (zalecana) użyj narzędzia do łączenia plików zintegrowanego z Babel
Jeśli używasz narzędzia do łączenia plików, zintegruj je z Babel i @babel/preset-env, aby uzyskać polyfille.
Skorzystaj z interaktywnego przewodnika po konfiguracji Babel, aby dowiedzieć się, jak zintegrować Babel z narzędziem do łączenia modułów.
Dzięki Babel nie musisz się martwić o dokładne polyfille, które należy uwzględnić. Zamiast tego określasz minimalne środowiska przeglądarki, które chcesz obsługiwać. Babel doda wtedy niezbędne polyfille. Babel dba o to, aby wymagania dotyczące obsługi przeglądarek były zawsze spełnione, nawet jeśli Firebase lub Twój kod zacznie korzystać z nowych funkcji ES.
@babel/preset-env zawiera szczegółowe informacje o dostępnych opcjach konfiguracji do określania docelowych środowisk (opcja targets) i dodawania polyfilli (opcja useBuiltIns).
Opcja 2: (niezalecana) ręczne dodawanie polyfilli
Możesz ręcznie dodać polyfille, korzystając z ulubionych bibliotek polyfilli (np. core-js).
import 'core-js/stable'
import 'cross-fetch/polyfill';
core-js udostępnia też wszechstronny plik polyfill, który możesz bezpośrednio umieścić na stronie HTML.
Jeśli nie używasz Babel, ta opcja może być wygodnym sposobem zarządzania polyfillami. Nie zalecamy jednak tej opcji „wszystko w jednym” w przypadku aplikacji produkcyjnych, ponieważ prawdopodobnie będzie ona zawierać niepotrzebne polyfille, co zwiększy rozmiar strony, a tym samym czas jej wczytywania.