Połącz aplikację i rozpocznij prototyp

Zanim zaczniesz korzystać z Firebase Local Emulator Suite, upewnij się, że masz utworzone projekt Firebase, skonfiguruj środowisko programistyczne i wybierz zainstalowane pakiety SDK Firebase dla Twojej platformy zgodnie z instrukcjami dla początkujących tematy Firebase dla Twojej platformy: Apple, Android lub internet.

Prototypowanie i testowanie

Local Emulator Suite zawiera kilka emulatorów produktów, zgodnie z opisem w tym artykule: Wprowadzenie do Firebase Local Emulator Suite. Możesz prototypować i testować za pomocą poszczególnych emulatorów oraz kombinacji emulatory, które według Ciebie odpowiadają usługom Firebase, których używasz. w produkcji.

Interakcja między bazą danych Firebase a emulatorami funkcji
Emulatory bazy danych i Cloud Functions w ramach pełny Local Emulator Suite.

Aby przedstawić przepływ pracy w usłudze Local Emulator Suite, załóżmy, że: pracujesz nad aplikacją, która korzysta z typowej kombinacji produktów: Firebase i funkcje w Cloud Functions aktywowane przez operacje na tej bazie danych.

Po lokalnym zainicjowaniu projektu Firebase cykl programowania za pomocą Local Emulator Suite zwykle składa się z 3 kroków:

  1. Prototypowe funkcje są interaktywne dzięki emulatorom i Emulator Suite UI.

  2. Jeśli używasz emulatora bazy danych lub emulatora Cloud Functions, wykonać jednorazowy krok, by połączyć aplikację z emulatorami.

  3. Zautomatyzuj testy za pomocą emulatorów i niestandardowych skryptów.

Inicjowanie projektu Firebase lokalnie

Pamiętaj, aby zainstalować interfejs wiersza poleceń lub zaktualizować ją do najnowszej wersji.

curl -sL firebase.tools | bash

Zainicjuj bieżący katalog roboczy jako projektu Firebase, postępując zgodnie z instrukcjami na ekranie, aby określić, że korzystasz z usługi. Cloud Functions i Cloud Firestore lub Realtime Database:

firebase init

Katalog projektu będzie teraz zawierać pliki konfiguracji Firebase, Plik definicji Firebase Security Rules dla bazy danych, katalog functions który zawiera kod Cloud Functions i inne pliki pomocnicze.

Interaktywne prototypowanie

Local Emulator Suite umożliwia szybkie tworzenie prototypów nowych funkcji, a wbudowany w pakiet Analytics to jeden z najbardziej przydatnych prototypów narzędzi. Działa to trochę tak, jakby konsola Firebase działała lokalnie.

Za pomocą Emulator Suite UI można iterować projekt bazy danych, różne przepływy danych obejmujące funkcje w Cloud Functions, oceniać zmiany reguł zabezpieczeń sprawdzać logi, aby potwierdzić wydajność usług backendu itd. Następnie: aby zacząć od początku, wyczyść bazę danych i zacznij od nowa z nowym pomysłem na projekt.

Wszystkie te funkcje są dostępne po uruchomieniu Local Emulator Suite z:

firebase emulators:start

Aby stworzyć prototyp naszej hipotetycznej aplikacji, skonfigurujmy i przetestujmy podstawową funkcję w Cloud Functions. modyfikowanie wpisów tekstowych w bazie danych oraz tworzenie i zapełnianie tej bazy danych w Emulator Suite UI, aby go aktywować.

  1. Utwórz funkcję w Cloud Functions aktywowaną przez zapisy w bazie danych, edytując functions/index.js w katalogu projektu. Zastąp w istniejącym pliku, używając poniższego fragmentu. Ta funkcja nasłuchuje zmian w dokumentach w kolekcji messages, konwertuje zawartość pola original dokumentu na wielkimi literami, a wynik jest zapisany w tagu uppercase tego dokumentu .
  2.   const functions = require('firebase-functions');
    
      exports.makeUppercase = functions.firestore.document('/messages/{documentId}')
          .onCreate((snap, context) => {
            const original = snap.data().original;
            console.log('Uppercasing', context.params.documentId, original);
            const uppercase = original.toUpperCase();
            return snap.ref.set({uppercase}, {merge: true});
          });
      
  3. Uruchom Local Emulator Suite za pomocą firebase emulators:start Cloud Functions i baza danych po uruchomieniu są automatycznie skonfigurowane do współpracy.
  4. Wyświetl interfejs w przeglądarce na stronie http://localhost:4000. Port 4000 jest domyślnym portem dla interfejsu użytkownika, ale sprawdź wyjście komunikatów terminala przez interfejsu wiersza poleceń Firebase. Zwróć uwagę na stan dostępnych emulatorów. W naszym przypadku uruchomione zostaną emulatory Cloud Functions i Cloud Firestore.
    Moje zdjęcie
  5. W interfejsie Firestore > Dane, kliknij Rozpocznij kolekcję i postępuj zgodnie z instrukcjami, aby utworzyć nowy dokument w Kolekcja messages z nazwą pola original i wartością test Spowoduje to aktywowanie funkcji w Cloud Functions. Zauważ, że nowy Wkrótce pojawi się pole uppercase z ciągiem znaków „TEST”.
    Moje zdjęcie Moje zdjęcie
  6. W Firestore > Prośby możesz sprawdzać żądania przesyłane do emulowana baza danych, w tym wszystkie wykonane oceny: Firebase Security Rules i spełnienie tych żądań.
  7. Sprawdź kartę Logi, aby sprawdzić, czy funkcja nie napotkała błędów. podczas aktualizowania bazy danych.

Możesz łatwo powtarzać kod funkcji w Cloud Functions za pomocą funkcji interaktywnych zmian w bazie danych, aż do uzyskania odpowiedniego przepływu danych, bez naruszania kodu dostępu do bazy danych w aplikacji, ponowne kompilowanie i ponowne uruchamianie zestawów testowych.

Łączenie aplikacji z emulatorami

Jeśli wykonasz dobre postępy w tworzeniu interaktywnych prototypów i zdecydujesz się projektu, możesz dodać do swojej aplikacji kod dostępu do bazy danych za pomocą dla odpowiedniego pakietu SDK. W dalszym ciągu będziesz korzystać z karty Baza danych, a w przypadku funkcji Karta Dzienniki w Emulator Suite UI, aby potwierdzić działanie aplikacji jest poprawne.

Pamiętaj, że Local Emulator Suite jest narzędziem dla programistów lokalnych. Zapisy do produkcyjnych baz danych nie będą aktywować funkcji, które są prototypowane lokalnie.

Aby przejść na zapisywanie przez aplikację zapisów w bazie danych, potrzebujesz aby wskazać zajęcia testowe lub konfigurację w aplikacji na stronie Cloud Firestore za pomocą emulatora.

Kotlin+KTX
// 10.0.2.2 is the special IP address to connect to the 'localhost' of
// the host computer from an Android emulator.
val firestore = Firebase.firestore
firestore.useEmulator("10.0.2.2", 8080)

firestore.firestoreSettings = firestoreSettings {
    isPersistenceEnabled = false
}
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of
// the host computer from an Android emulator.
FirebaseFirestore firestore = FirebaseFirestore.getInstance();
firestore.useEmulator("10.0.2.2", 8080);

FirebaseFirestoreSettings settings = new FirebaseFirestoreSettings.Builder()
        .setPersistenceEnabled(false)
        .build();
firestore.setFirestoreSettings(settings);
Swift
let settings = Firestore.firestore().settings
settings.host = "127.0.0.1:8080"
settings.cacheSettings = MemoryCacheSettings()
settings.isSSLEnabled = false
Firestore.firestore().settings = settings

Web

import { getFirestore, connectFirestoreEmulator } from "firebase/firestore";

// firebaseApps previously initialized using initializeApp()
const db = getFirestore();
connectFirestoreEmulator(db, '127.0.0.1', 8080);

Web

// Firebase previously initialized using firebase.initializeApp().
var db = firebase.firestore();
if (location.hostname === "localhost") {
  db.useEmulator("127.0.0.1", 8080);
}

Automatyzowanie testów za pomocą skryptów niestandardowych

A teraz ostatni krok ogólnego przepływu pracy. Po utworzeniu prototypu funkcji i wygląda obiecująco na wszystkich platformach, wdrażaniem i testowaniem. W przypadku testów jednostkowych i przepływów pracy CI możesz uruchomić używać emulatorów do uruchamiania testów skryptów i wyłączania emulatorów w ramach pojedynczej rozmowy przy użyciu polecenie exec:

firebase emulators:exec "./testdir/test.sh"

Więcej informacji na temat poszczególnych emulatorów

Wiesz już, jak wygląda podstawowy przepływ pracy po stronie klienta. przejdź do szczegółów poszczególnych emulatorów w pakiecie Analytics, w tym aby używać ich do tworzenia aplikacji po stronie serwera:

Co dalej?

Zapoznaj się z tematami związanymi z konkretnymi emulatorami, do których linki znajdziesz powyżej. Następnie: