Uygulamanızı bağlayıp prototip oluşturmaya başlayın


Firebase Local Emulator Suite ile çalışmaya başlamadan önce bir Firebase projesi oluşturduğunuzdan, geliştirme ortamınızı ayarladığınızdan ve platformunuz için Firebase SDK'larını Firebase'i kullanmaya başlama konularına göre seçip yüklediğinizden emin olun: Apple, Android veya Web.

Prototip oluşturma ve test etme

Local Emulator Suite, Firebase Local Emulator Suite'a Giriş bölümünde açıklandığı gibi çeşitli ürün emülatörleri içerir. Üretimde kullandığınız Firebase ürünlerine karşılık gelen şekilde, tek tek emülatörlerle ve emülatör kombinasyonlarıyla prototip oluşturup test edebilirsiniz.

Firebase veritabanı ile işlev emülatörleri arasındaki etkileşim
Veritabanı ve Cloud Functions emülatörleri, Local Emulator Suite'nin bir parçası olarak.

Bu konuda, Local Emulator Suite iş akışını tanıtmak için tipik bir ürün kombinasyonu kullanan bir uygulama üzerinde çalıştığınızı varsayalım: Firebase veritabanı ve bu veritabanındaki işlemler tarafından tetiklenen Cloud Functions işlevleri.

Firebase projenizi yerel olarak başlattıktan sonra, Local Emulator Suite kullanılarak yapılan geliştirme döngüsü genellikle üç adımdan oluşur:

  1. Özelliklerin prototipini emülatörler ve Emulator Suite UI ile etkileşimli olarak oluşturun.

  2. Veritabanı emülatörü veya Cloud Functions emülatörünü kullanıyorsanız uygulamanızı emülatörlere bağlamak için tek seferlik bir adım uygulayın.

  3. Emülatörler ve özel komut dosyalarıyla testlerinizi otomatikleştirin.

Firebase projesini yerel olarak başlatma

CLI'yi yüklediğinizden veya en son sürümüne güncellediğinizden emin olun.

curl -sL firebase.tools | bash

Henüz yapmadıysanız ekrandaki istemleri uygulayarak geçerli çalışma dizinini Firebase projesi olarak başlatın. Cloud Functions ve Cloud Firestore ya da Realtime Database kullandığınızı belirtin:

firebase init

Proje dizininiz artık Firebase yapılandırma dosyalarını, veritabanı için bir Firebase Security Rules tanım dosyasını, bulut işlevleri kodunu içeren bir functions dizinini ve diğer destekleyici dosyaları içerecek.

Etkileşimli prototip oluşturma

Local Emulator Suite, yeni özellikleri hızlı bir şekilde prototip oluşturmanıza olanak tanımak için tasarlanmıştır ve Suite'in yerleşik kullanıcı arayüzü, en kullanışlı prototip oluşturma araçlarından biridir. Bu, Firebase konsolunun yerel olarak çalıştırılmasına benzer.

Emulator Suite UI kullanarak veritabanı tasarımını yineleyebilir, Cloud Functions'ı içeren farklı veri akışlarını deneyebilir, güvenlik kurallarındaki değişiklikleri değerlendirebilir, arka uç hizmetlerinizin nasıl performans gösterdiğini onaylamak için günlükleri kontrol edebilir ve daha fazlasını yapabilirsiniz. Ardından, baştan başlamak isterseniz veritabanınızı temizleyip yeni bir tasarım fikriyle sıfırdan başlayabilirsiniz.

Bu özelliklerin tümü, Local Emulator Suite ile başladığınızda kullanılabilir:

firebase emulators:start

Varsayımsal uygulamamızın prototipini oluşturmak için veritabanındaki metin girişlerini değiştirecek ve Emulator Suite UI içinde bu veritabanını oluşturup dolduracak temel bir Cloud Function'ı ayarlayıp test edelim.

  1. Proje dizininizdeki functions/index.js dosyasını düzenleyerek veritabanı yazma işlemleri tarafından tetiklenen bir Cloud Functions işlevi oluşturun. Mevcut dosyanın içeriğini aşağıdaki snippet ile değiştirin. Bu işlev, messages koleksiyonundaki dokümanlarda yapılan değişiklikleri dinler, bir dokümanın original alanının içeriğini büyük harfe dönüştürür ve sonucu bu dokümanın uppercase alanında saklar.
  2.   const functions = require('firebase-functions/v1');
    
      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. Local Emulator Suitefirebase emulators:start ile başlatın. Cloud Functions ve veritabanı emülatörleri, birlikte çalışacak şekilde otomatik olarak yapılandırılmış olarak başlatılır.
  4. Kullanıcı arayüzünü tarayıcınızda http://localhost:4000 adresinde görüntüleyin. Kullanıcı arayüzü için varsayılan bağlantı noktası 4000'dir ancak Firebase CLI tarafından oluşturulan terminal mesajlarını kontrol edin. Kullanılabilir emülatörlerin durumunu not edin. Bu örnekte, Cloud Functions ve Cloud Firestore emülatörleri çalışıyor olacak.
    Resmim
  5. Kullanıcı arayüzünde, Firestore > Veri sekmesinde Koleksiyonu başlat'ı tıklayın ve istemleri uygulayarak messages koleksiyonunda, alan adı original ve değeri test olan yeni bir doküman oluşturun. Bu işlem, Cloud Functions işlevimizi tetikler. Kısa süre sonra yeni bir uppercase alanının göründüğünü ve "TEST" dizesiyle doldurulduğunu gözlemleyin.
    Resmim Resmim
  6. Firestore > İstekler sekmesinde, bu isteklerin karşılanması kapsamında gerçekleştirilen tüm Firebase Security Rules değerlendirmeleri de dahil olmak üzere, emüle edilmiş veritabanınıza yapılan istekleri inceleyin.
  7. Veritabanını güncellerken işlevinizin hatayla karşılaşmadığını doğrulamak için Günlükler sekmesini kontrol edin.

Uygulama içi veritabanı erişim koduna dokunmadan, test paketlerini yeniden derleyip çalıştırmadan, istediğiniz veri akışını elde edene kadar bulut işlevi kodunuz ve etkileşimli veritabanı düzenlemeleriniz arasında kolayca yineleme yapabilirsiniz.

Uygulamanızı emülatörlere bağlama

Etkileşimli prototipleme konusunda iyi bir ilerleme kaydettiğinizde ve bir tasarım üzerinde karar kıldığınızda, uygun SDK'yı kullanarak uygulamanıza veritabanı erişim kodu eklemeye hazır olursunuz. Uygulamanızın davranışının doğru olduğunu onaylamak için veritabanı sekmesini ve işlevler için Emulator Suite UI'daki Günlükler sekmesini kullanmaya devam edersiniz.

Local Emulator Suite aracının yerel bir geliştirme aracı olduğunu unutmayın. Üretim veritabanlarınıza yazma işlemleri, yerel olarak prototipini oluşturduğunuz işlevleri tetiklemez.

Uygulamanızın veritabanına yazma işlemi yapmasını sağlamak için test sınıflarınızı veya uygulama içi yapılandırmanızı Cloud Firestore emülatörüne yönlendirmeniz gerekir.

Kotlin
// 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);
}

Testlerinizi özel komut dosyalarıyla otomatikleştirme

Şimdi de genel iş akışının son adımına geçelim. Uygulama içi özelliğinizin prototipini oluşturup tüm platformlarınızda umut verici göründüğünden emin olduktan sonra son uygulama ve test aşamasına geçebilirsiniz. Birim testi ve CI iş akışları için emülatörleri başlatabilir, komut dosyası içeren testler çalıştırabilir ve emülatörleri exec komutuyla tek bir çağrıda kapatabilirsiniz:

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

Emülatörleri daha ayrıntılı inceleme

Temel istemci tarafı iş akışının nasıl göründüğünü öğrendiğinize göre, paketteki her bir emülatörle ilgili ayrıntılara geçebilirsiniz. Bu ayrıntılar arasında, emülatörlerin sunucu tarafı uygulama geliştirme için nasıl kullanılacağı da yer alır:

Sonrasında ne olacak?

Yukarıda bağlantısı verilen belirli emülatörlerle ilgili konuları okuduğunuzdan emin olun. Ardından: