قبل از شروع کار با Firebase Local Emulator Suite ، مطمئن شوید که یک پروژه Firebase ایجاد کردهاید، محیط توسعه خود را راهاندازی کردهاید و SDK های Firebase را برای پلتفرم خود مطابق با مباحث شروع به کار با Firebase برای پلتفرم خود: Apple ، Android یا Web انتخاب و نصب کردهاید.
نمونه اولیه و آزمایش
Local Emulator Suite شامل چندین شبیهساز محصول است، همانطور که در مقدمهای بر Firebase Local Emulator Suite توضیح داده شده است. شما میتوانید با شبیهسازهای منفرد و همچنین ترکیبی از شبیهسازها، بسته به اینکه از کدام محصولات Firebase در محیط عملیاتی استفاده میکنید، نمونهسازی اولیه انجام داده و آزمایش کنید.

برای این موضوع، و برای معرفی گردش کار Local Emulator Suite ، فرض کنید روی برنامهای کار میکنید که از ترکیبی معمول از محصولات استفاده میکند: یک پایگاه داده Firebase و توابع ابری که توسط عملیات روی آن پایگاه داده فعال میشوند.
پس از اینکه پروژه Firebase خود را به صورت محلی راهاندازی کردید، چرخه توسعه با استفاده از Local Emulator Suite معمولاً سه مرحله خواهد داشت:
ویژگیهای نمونه اولیه به صورت تعاملی با شبیهسازها و رابط کاربری مجموعه شبیهسازها Emulator Suite UI میکنند.
اگر از شبیهساز پایگاه داده یا شبیهساز Cloud Functions استفاده میکنید، یک مرحلهی یکباره برای اتصال برنامهتان به شبیهسازها انجام دهید.
تستهای خود را با شبیهسازها و اسکریپتهای سفارشی خودکار کنید.
مقداردهی اولیه محلی یک پروژه Firebase
مطمئن شوید که CLI را نصب کردهاید یا آن را به آخرین نسخه بهروزرسانی کردهاید .
curl -sL firebase.tools | bashاگر قبلاً این کار را نکردهاید، دایرکتوری کاری فعلی را به عنوان یک پروژه Firebase مقداردهی اولیه کنید و با دنبال کردن دستورالعملهای روی صفحه، مشخص کنید که از Cloud Functions و Cloud Firestore یا Realtime Database استفاده میکنید:
firebase init دایرکتوری پروژه شما اکنون شامل فایلهای پیکربندی Firebase، یک فایل تعریف Firebase Security Rules برای پایگاه داده، یک دایرکتوری functions حاوی کد توابع ابری و سایر فایلهای پشتیبانی خواهد بود.
نمونه اولیه به صورت تعاملی
Local Emulator Suite به گونهای طراحی شده است که به شما امکان میدهد به سرعت ویژگیهای جدید را نمونهسازی کنید و رابط کاربری داخلی این مجموعه یکی از مفیدترین ابزارهای نمونهسازی آن است. این کمی شبیه اجرای کنسول Firebase به صورت محلی است.
با استفاده از Emulator Suite UI ، میتوانید طراحی یک پایگاه داده را تکرار کنید، جریانهای داده مختلف شامل توابع ابری را امتحان کنید، تغییرات قوانین امنیتی را ارزیابی کنید، گزارشها را بررسی کنید تا عملکرد سرویسهای back-end خود را تأیید کنید و موارد دیگر. سپس، اگر میخواهید از نو شروع کنید، کافیست پایگاه داده خود را پاک کنید و با یک ایده طراحی جدید، از نو شروع کنید.
همه اینها وقتی در دسترس است که Local Emulator Suite با موارد زیر شروع کنید:
firebase emulators:startبرای نمونهسازی اولیه برنامه فرضی خود، بیایید یک تابع ابری پایه را برای تغییر ورودیهای متنی در یک پایگاه داده تنظیم و آزمایش کنیم، و آن پایگاه داده را در Emulator Suite UI ایجاد و پر کنیم تا آن را فعال کنیم.
- با ویرایش فایل
functions/index.jsدر دایرکتوری پروژه خود، یک تابع ابری ایجاد کنید که توسط نوشتن در پایگاه داده فعال شود. محتویات فایل موجود را با قطعه کد زیر جایگزین کنید. این تابع به تغییرات اسناد موجود در مجموعهmessagesگوش میدهد، محتویات فیلدoriginalیک سند را به حروف بزرگ تبدیل میکند و نتیجه را در فیلدuppercaseآن سند ذخیره میکند. - Local Emulator Suite با
firebase emulators:startاجرا کنید. Cloud Functions و شبیهسازهای پایگاه داده، که به طور خودکار برای همکاری پیکربندی شدهاند، شروع به کار میکنند. - رابط کاربری را در مرورگر خود در
http://localhost:4000مشاهده کنید. پورت ۴۰۰۰ پورت پیشفرض رابط کاربری است، اما پیامهای خروجی ترمینال توسط Firebase CLI را بررسی کنید. به وضعیت شبیهسازهای موجود توجه کنید. در مورد ما، شبیهسازهای Cloud Functions و Cloud Firestore اجرا خواهند شد.

- در رابط کاربری، در تب Firestore > Data ، روی Start collection کلیک کنید و دستورالعملها را دنبال کنید تا یک سند جدید در یک مجموعه
messagesبا نام فیلدoriginalو مقدارtestایجاد شود. این کار تابع cloud ما را فعال میکند. مشاهده میکنید که یک فیلد جدیدuppercaseبه زودی ظاهر میشود که با رشته "TEST" پر شده است.


- در برگه Firestore > Requests ، درخواستهای ارسالی به پایگاه داده شبیهسازی شده خود، از جمله تمام ارزیابیهای Firebase Security Rules که به عنوان بخشی از انجام آن درخواستها انجام شده است را بررسی کنید.
- برای اطمینان از اینکه تابع شما هنگام بهروزرسانی پایگاه داده با خطا مواجه نشده است، تب Logs را بررسی کنید.
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}); });
شما میتوانید به راحتی بین کد تابع ابری خود و ویرایشهای تعاملی پایگاه داده جابجا شوید تا زمانی که جریان داده مورد نظر خود را بدست آورید، بدون اینکه به کد دسترسی به پایگاه داده درون برنامهای دست بزنید، مجموعههای تست را دوباره کامپایل و دوباره اجرا کنید.
اتصال برنامه به شبیهسازها
وقتی در نمونهسازی تعاملی پیشرفت خوبی داشتید و روی یک طرح به توافق رسیدید، آماده خواهید بود تا کد دسترسی به پایگاه داده را با استفاده از SDK مناسب به برنامه خود اضافه کنید. برای تأیید صحت رفتار برنامه خود، همچنان از تب پایگاه داده و برای توابع، از تب Logs در Emulator Suite UI استفاده خواهید کرد.
به یاد داشته باشید که Local Emulator Suite یک ابزار توسعه محلی است. نوشتن در پایگاههای داده عملیاتی شما، توابعی را که به صورت محلی نمونهسازی میکنید، اجرا نمیکند.
برای تغییر به حالتی که برنامه شما در پایگاه داده بنویسد، باید کلاسهای آزمایشی یا پیکربندی درون برنامهای خود را به شبیهساز Cloud Firestore ارجاع دهید.
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);
سویفت
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); }
تستهای خود را با اسکریپتهای سفارشی خودکار کنید
حالا برای آخرین مرحله کلی گردش کار. وقتی نمونه اولیه ویژگی خود را در برنامه ساختید و در تمام پلتفرمهایتان امیدوارکننده به نظر رسید، میتوانید به پیادهسازی و آزمایش نهایی بپردازید. برای آزمایش واحد و گردشهای کاری CI، میتوانید شبیهسازها را راهاندازی کنید، تستهای اسکریپتشده را اجرا کنید و شبیهسازها را در یک فراخوانی با دستور exec خاموش کنید:
firebase emulators:exec "./testdir/test.sh"شبیهسازهای تکی را با عمق بیشتری بررسی کنید
اکنون که با گردش کار اولیه سمت کلاینت آشنا شدید، میتوانید جزئیات مربوط به شبیهسازهای موجود در مجموعه، از جمله نحوه استفاده از آنها برای توسعه برنامههای سمت سرور را ادامه دهید:
- شبیهساز Authentication به گردشهای کاری نمونهسازی خود اضافه کنید
- با ویژگیهای شبیهساز Realtime Database به طور عمیق آشنا شوید
- درباره ویژگیهای Cloud Storage for Firebase به طور عمیق اطلاعات کسب کنید
- با ویژگیهای شبیهساز Cloud Firestore به طور کامل آشنا شوید
- برنامه خود را به شبیهساز توابع ابری متصل کنید
- با استفاده از شبیهساز Extensions Firebase Extensions ارزیابی کنید و در عین حال هزینههای صدور صورتحساب را به حداقل برسانید.
بعدش چی؟
حتماً مباحث مربوط به شبیهسازهای خاص که در بالا لینک شدهاند را بخوانید. سپس:
- برای مجموعهای منتخب از ویدیوها و مثالهای آموزشی دقیق، لیست پخش آموزش شبیهسازهای Firebase را دنبال کنید.
- موارد استفاده پیشرفته مربوط به تست قوانین امنیتی و کیت توسعه نرمافزار Firebase Test SDK را بررسی کنید: تست قوانین امنیتی ( Cloud Firestore ) ، تست قوانین امنیتی ( Realtime Database ) و تست قوانین امنیتی ( Cloud Storage for Firebase ) .