Podczas tworzenia aplikacji internetowej za pomocą Firebase możesz napotkać nieznane pojęcia lub obszary, w których przypadku potrzebujesz więcej informacji, aby podejmować właściwe decyzje dotyczące projektu. Na tej stronie znajdziesz odpowiedzi na te pytania lub informacje o miejscach, w których możesz dowiedzieć się więcej.
Jeśli masz pytania na tematy, których nie ma na tej stronie, odwiedź jedną z naszych społeczności online. Będziemy też regularnie aktualizować tę stronę o nowe tematy, więc zaglądaj na nią, aby sprawdzić, czy dodaliśmy temat, który Cię interesuje.
Wersje pakietu SDK: z nazwą przestrzeni nazw i modułowa
Firebase udostępnia 2 interfejsy API do aplikacji internetowych:
- JavaScript – w przestrzeni nazw. Jest to interfejs JavaScript, który Firebase utrzymuje od wielu lat i jest znany deweloperom stron internetowych korzystającym ze starszych aplikacji Firebase. Interfejs API z przestrzenią nazw nie jest stale aktualizowany o nowe funkcje, dlatego większość nowych aplikacji powinna korzystać z interfejsu API w postaci modułów.
- JavaScript – modularny. Ten pakiet SDK opiera się na podejściu modułowym, które zmniejsza jego rozmiar i zwiększa wydajność dzięki nowoczesnym narzędziom do kompilacji JavaScript, takim jak webpack czy Rollup.
Interfejs API w wersji modułowej dobrze integruje się z narzędziami do kompilacji, które usuwają kod nieużywany w aplikacji. Proces ten nazywa się „oczyszczaniem drzewa”. Aplikacje utworzone za pomocą tego pakietu SDK mają znacznie mniejszy rozmiar. Interfejs API w przestrzeni nazw, choć dostępny jest jako moduł, nie ma ściśle modułowej struktury i nie zapewnia takiego samego stopnia zmniejszenia rozmiaru.
Chociaż większość interfejsów API w formie modułów opiera się na tych samych wzorach co interfejsy API w ramach przestrzeni nazw, organizacja kodu jest inna. Ogólnie interfejs API z przestrzenią nazw jest zorientowany na przestrzeń nazw i schemat usługi, a interfejs API z modułami – na funkcje dyskretne. Na przykład w modularnym interfejsie API zastępuje się łańcuch kropek w interfejsie z nazwą przestrzeni nazw, np. firebaseApp.auth()
, pojedynczą funkcją getAuth()
, która przyjmuje firebaseApp
i zwraca instancję Authentication.
Oznacza to, że aplikacje internetowe utworzone z użyciem interfejsu API w przestrzeni nazw wymagają przebudowy, aby można było z nich korzystać w ramach modułowego projektu aplikacji. Więcej informacji znajdziesz w przewodniku po uaktualnieniu.
JavaScript – modułowy interfejs API dla nowych aplikacji
Jeśli zaczynasz nową integrację z Firebase, możesz włączyć modularne API, gdy dodasz i inicjalizujesz pakiet SDK.
Podczas tworzenia aplikacji pamiętaj, że kod będzie zorganizowany głównie wokół funkcji. W interfejsie API modułowym usługi są przekazywane jako pierwszy argument, a funkcja wykorzystuje szczegóły usługi do wykonania reszty. Przykład:
import { getAuth, onAuthStateChanged } from "firebase/auth";
const auth = getAuth(firebaseApp);
onAuthStateChanged(auth, user => {
// Check for user status
});
Więcej przykładów i szczegółowych informacji znajdziesz w przewodnikach dotyczących poszczególnych obszarów usług oraz w dokumentacji referencyjnej interfejsu API.
Sposoby dodawania pakietów SDK do klienta internetowego do aplikacji
Firebase udostępnia biblioteki JavaScripta dla większości usług Firebase, m.in. Remote Config i FCM. Sposób dodawania pakietów SDK Firebase do aplikacji internetowej zależy od narzędzi, których używasz w przypadku aplikacji (np. modułu pakietu).
Do swojej aplikacji możesz dodać dowolną z dostępnych bibliotek, korzystając z jednej z tych metod:
- npm (do tworzenia pakietów modułów)
- Sieć dostarczania treści (CDN)
Szczegółowe instrukcje konfiguracji znajdziesz w artykule Dodawanie Firebase do aplikacji JavaScript. Pozostała część tej sekcji zawiera informacje, które pomogą Ci wybrać spośród dostępnych opcji.
npm
Pobieranie pakietu npm Firebase (zawierającego pakiety przeglądarki i Node.js) zapewnia lokalną kopię pakietu SDK Firebase, która może być potrzebna w przypadku aplikacji innych niż przeglądarkowe, takich jak aplikacje Node.js, React Native czy Electron. W przypadku niektórych pakietów w pakietach do pobrania dostępne są opcjonalne pakiety Node.js i React Native. Pakiety Node.js są potrzebne do renderowania po stronie serwera (SSR) w ramach frameworków SSR.
Korzystanie z npm w połączeniu z pakietem modułów takim jak webpack lub Rollup zapewnia opcje optymalizacji, które pozwalają na „odchudzanie” nieużywanego kodu i stosowanie ukierunkowanych polyfilli, co może znacznie zmniejszyć rozmiar aplikacji. Wdrożenie tych funkcji może nieco skomplikować konfigurację i łańcuch kompilacji, ale można to zminimalizować, korzystając z popularnych narzędzi wiersza poleceń. Do takich narzędzi należą m.in. Angular, React, Vue, Next.
W skrócie:
- zapewniają przydatne optymalizacje rozmiaru aplikacji;
- Dostępne są solidne narzędzia do zarządzania modułami
- Wymagany do korzystania z SSR w Node.js
Sieć dostarczania treści (CDN)
Dodawanie bibliotek przechowywanych w sieci CDN Firebase to prosta metoda konfiguracji pakietu SDK, która może być znana wielu deweloperom. Jeśli chcesz dodać SDK-i za pomocą CDN, nie będziesz potrzebować narzędzia do kompilacji, a łańcuch kompilacji może być prostszy i łatwiejszy w użyciu niż w przypadku pakietów modułów. Jeśli nie zależy Ci na rozmiarze zainstalowanej aplikacji i nie masz specjalnych wymagań, takich jak transpilacja z TypeScript, sieć CDN może być dobrym wyborem.
W skrócie:
- Znajome i proste
- Odpowiednie, gdy rozmiar aplikacji nie jest głównym problemem
- Odpowiednia, gdy witryna nie korzysta z narzędzi do kompilacji.
Warianty pakietu Firebase Web SDK
Pakiet SDK Firebase Web można używać zarówno w aplikacjach przeglądarkowych, jak i w aplikacjach Node. Niektóre produkty są jednak niedostępne w środowiskach węzłowych. Zobacz listę obsługiwanych środowisk.
Niektóre zestawy SDK usług udostępniają osobne wersje dla przeglądarki i Node.com. Każda z nich jest dostępna w formatach ESM i CJS. Niektóre zestawy SDK usług udostępniają nawet wersje dla Cordova lub React Native. Pakiet SDK dla klienta internetowego jest skonfigurowany tak, aby zapewniać odpowiedni wariant na podstawie konfiguracji narzędzi lub środowiska. W większości przypadków nie wymaga ręcznego wybierania. Wszystkie warianty pakietu SDK zostały zaprojektowane w celu ułatwienia tworzenia aplikacji internetowych lub aplikacji klienckich, które będą dostępne dla użytkowników końcowych, np. w postaci aplikacji na komputer z systemem Node.js lub IoT. Jeśli chcesz skonfigurować dostęp administracyjny z otoczeń z uprawnieniami (np. serwerów), użyj zamiast tego Firebase Admin SDK.
Wykrywanie środowiska za pomocą pakietów i ramek
Gdy instalujesz pakiet SDK Firebase Web za pomocą npm, są instalowane wersje JavaScript i Node.js. Pakiet zapewnia szczegółowe wykrywanie środowiska, aby włączyć odpowiednie pakiety dla Twojej aplikacji.
Jeśli Twój kod używa instrukcji require
w Node.js, pakiet SDK znajdzie pakiet konkretny dla Node. W przeciwnym razie ustawienia pakietu muszą być prawidłowo skonfigurowane, aby wykryć odpowiednie pole punktu wejścia w pliku package.json
(na przykład main
, browser
lub module
). Jeśli wystąpią błędy pakietu SDK w czasie działania, sprawdź, czy pakiet jest skonfigurowany tak, aby nadawać priorytet odpowiedniemu typowi pakietu w Twoim środowisku.
Więcej informacji o obiekcie konfiguracji Firebase
Aby zainicjować Firebase w aplikacji, musisz podać konfigurację projektu Firebase. Obiekt konfiguracji Firebase możesz pobrać w dowolnym momencie.
Nie zalecamy ręcznej edycji obiektu konfiguracji, zwłaszcza tych wymaganych „opcji Firebase”:
apiKey
,projectId
iappID
. Jeśli inicjujesz aplikację z nieprawidłowymi wartościami lub bez wymaganych „opcji Firebase”, użytkownicy aplikacji mogą napotkać poważne problemy. Wyjątkiem jest parametrauthDomain
, który można aktualizować zgodnie ze sprawdzonymi metodami korzystania z funkcji signInWithRedirect.Jeśli w projekcie Firebase masz włączoną funkcję Google Analytics, obiekt config zawiera pole
measurementId
. Więcej informacji o tym zawodzie znajdziesz na Analyticsstronie z informacjami dla początkujących.Jeśli włączysz opcję Google Analytics lub Realtime Database po utworzeniu aplikacji internetowej Firebase, pamiętaj, aby zaktualizować obiekt konfiguracji Firebase używany w aplikacji za pomocą powiązanych wartości konfiguracji (odpowiednio
measurementId
idatabaseURL
). Obiekt konfiguracji Firebase możesz pobrać w dowolnym momencie.
Oto format obiektu konfiguracji ze wszystkimi włączonymi usługami (te wartości są wypełniane automatycznie):
var firebaseConfig = { apiKey: "API_KEY", authDomain: "PROJECT_ID.firebaseapp.com", // The value of `databaseURL` depends on the location of the database databaseURL: "https://DATABASE_NAME.firebaseio.com", projectId: "PROJECT_ID", storageBucket: "PROJECT_ID.appspot.com", messagingSenderId: "SENDER_ID", appId: "APP_ID", // For Firebase JavaScript SDK v7.20.0 and later, `measurementId` is an optional field measurementId: "G-MEASUREMENT_ID", };
Dostępne biblioteki
Dodatkowe opcje konfiguracji
Opóźnione wczytywanie pakietów SDK Firebase (z CDN)
Możesz opóźnić uwzględnienie pakietów SDK Firebase do momentu załadowania całej strony. Jeśli używasz modułowych skryptów CDN interfejsu API z <script type="module">
, jest to zachowanie domyślne. Jeśli używasz skryptów CDN z przestrzenią nazw jako modułu, wykonaj te czynności, aby opóźnić wczytywanie:
Dodaj do każdego tagu
script
w pakiecie SDK Firebase flagędefer
, a potem odłóż inicjowanie Firebase za pomocą drugiego skryptu, np.:<script defer src="https://www.gstatic.com/firebasejs/8.10.1/firebase-app.js"></script> <script defer src="https://www.gstatic.com/firebasejs/8.10.1/firebase-auth.js"></script> <script defer src="https://www.gstatic.com/firebasejs/8.10.1/firebase-firestore.js"></script> // ... <script defer src="./init-firebase.js"></script>
Utwórz plik
init-firebase.js
, a potem dodaj do niego te informacje:// TODO: Replace the following with your app's Firebase project configuration var firebaseConfig = { // ... }; // Initialize Firebase firebase.initializeApp(firebaseConfig);
Korzystanie z kilku projektów Firebase w jednej aplikacji
W większości przypadków wystarczy zainicjować Firebase w jednej, domyślnej aplikacji. W tej aplikacji możesz uzyskać dostęp do Firebase na 2 sposoby:
Web
import { initializeApp } from "firebase/app"; import { getStorage } from "firebase/storage"; import { getFirestore } from "firebase/firestore"; // Initialize Firebase with a "default" Firebase project const defaultProject = initializeApp(firebaseConfig); console.log(defaultProject.name); // "[DEFAULT]" // Option 1: Access Firebase services via the defaultProject variable let defaultStorage = getStorage(defaultProject); let defaultFirestore = getFirestore(defaultProject); // Option 2: Access Firebase services using shorthand notation defaultStorage = getStorage(); defaultFirestore = getFirestore();
Web
// Initialize Firebase with a "default" Firebase project const defaultProject = firebase.initializeApp(firebaseConfig); console.log(defaultProject.name); // "[DEFAULT]" // Option 1: Access Firebase services via the defaultProject variable let defaultStorage = defaultProject.storage(); let defaultFirestore = defaultProject.firestore(); // Option 2: Access Firebase services using shorthand notation defaultStorage = firebase.storage(); defaultFirestore = firebase.firestore();
Czasami jednak potrzebujesz dostępu do wielu projektów Firebase w tym samym czasie. Możesz na przykład odczytywać dane z bazy danych w jednym projekcie Firebase, ale przechowywać pliki w innym projekcie Firebase. Możesz też uwierzytelnić jeden projekt, a drugi pozostawić bez uwierzytelnienia.
Pakiet SDK Firebase JavaScript umożliwia inicjowanie i jednoczesne używanie wielu projektów Firebase w jednej aplikacji, przy czym każdy z nich korzysta z własnych informacji konfiguracyjnych Firebase.
Web
import { initializeApp, getApp } from "firebase/app"; import { getStorage } from "firebase/storage"; import { getFirestore } from "firebase/firestore"; // Initialize Firebase with a default Firebase project initializeApp(firebaseConfig); // Initialize Firebase with a second Firebase project const otherProject = initializeApp(otherProjectFirebaseConfig, "other"); console.log(getApp().name); // "[DEFAULT]" console.log(otherProject.name); // "otherProject" // Use the shorthand notation to access the default project's Firebase services const defaultStorage = getStorage(); const defaultFirestore = getFirestore(); // Use the otherProject variable to access the second project's Firebase services const otherStorage = getStorage(otherProject); const otherFirestore = getFirestore(otherProject);
Web
// Initialize Firebase with a default Firebase project firebase.initializeApp(firebaseConfig); // Initialize Firebase with a second Firebase project const otherProject = firebase.initializeApp(otherProjectFirebaseConfig, "other"); console.log(firebase.app().name); // "[DEFAULT]" console.log(otherProject.name); // "otherProject" // Use the shorthand notation to access the default project's Firebase services const defaultStorage = firebase.storage(); const defaultFirestore = firebase.firestore(); // Use the otherProject variable to access the second project's Firebase services const otherStorage = otherProject.storage(); const otherFirestore = otherProject.firestore();
Uruchamianie lokalnego serwera WWW na potrzeby programowania
Jeśli tworzysz aplikację internetową, niektóre części pakietu SDK Firebase JavaScript wymagają, aby aplikacja internetowa była obsługiwana z serwera, a nie z lokalnego systemu plików. Do uruchamiania serwera lokalnego możesz użyć interfejsu wiersza poleceń Firebase.
Jeśli w swojej aplikacji masz już skonfigurowane Firebase Hosting, być może niektóre z tych czynności zostały już przez Ciebie wykonane.
Aby obsługiwać aplikację internetową, użyjesz wiersza poleceń Firebase, czyli narzędzia wiersza poleceń.
Więcej informacji o instalowaniu interfejsu wiersza poleceń i aktualizowaniu go do najnowszej wersji znajdziesz w dokumentacji Firebase.
Zainicjuj projekt Firebase. Uruchom to polecenie w katalogu głównym lokalnego katalogu aplikacji:
firebase init
Uruchom serwer lokalny na potrzeby programowania. Uruchom to polecenie w katalogu głównym lokalnej aplikacji:
firebase serve
Zasoby typu open source dla pakietów Firebase JavaScript SDK
Firebase obsługuje tworzenie oprogramowania typu open source i zachęcamy do korzystania z usług społeczności oraz do przesyłania opinii.
Pakiety Firebase JavaScript SDK
Większość pakietów SDK Firebase JavaScript jest opracowywana jako biblioteki open source w naszym publicznym repozytorium GitHub Firebase.
Przykłady krótkich wprowadzeń
Firebase udostępnia w sieci zbiór przykładów szybkiego startu dla większości interfejsów API Firebase. Te krótkie przewodniki znajdziesz w publicznym repozytorium GitHub z krótkimi przewodnikami Firebase. Możesz użyć tych samouczków jako przykładowego kodu do korzystania z pakietów SDK Firebase.