قبلاز اینکه با Firebase Local Emulator Suite شروع کنید، مطمئن شوید که پروژه Firebase ایجاد کردهاید، محیط توسعه نرمافزار خود را راهاندازی کردهاید، و کیتهای توسعه نرمافزار Firebase را برای پلاتفرم خود طبق موضوعات شروع به کار با Firebase برای پلاتفرم خود انتخاب و نصب کردهاید: Apple، Android یا وب.
نمونه نخستین و آزمایش
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 بهگونهای طراحی شده است که به شما امکان میدهد بهسرعت ویژگیهای جدید را نمونهسازی کنید، و میانای کاربر داخلی Suite یکی از مفیدترین ابزارهای نمونهسازی آن است. این کار کمی شبیه به اجرای کنسول Firebase بهصورت محلی است.
بااستفاده از Emulator Suite UI، میتوانید طراحی پایگاه داده را تکرار کنید، جریانهای داده مختلف شامل توابع ابری را امتحان کنید، تغییرات «قوانین امنیتی» را ارزیابی کنید، گزارشها را بررسی کنید تا عملکرد سرویسهای پسبک خود را تأیید کنید، و موارد دیگر. سپس، اگر میخواهید از نو شروع کنید، کافی است پایگاه دادهتان را پاک کنید و با ایده طراحی جدیدی از نو شروع کنید.
همه اینها وقتی دردسترس است که 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 اجرا خواهند شد.
- در UI، در برگه Firestore > داده، روی
شروع مجموعه کلیک کنید و دستورالعملها را برای ایجاد سند جدید در
messagesمجموعه، با نام فیلدoriginalو مقدارtestدنبال کنید. این کار تابع ابری ما را راهاندازی میکند. مشاهده کنید که فیلد جدیدuppercaseبهزودی ظاهر میشود و با رشته «TEST» پر شده است.
- در برگه Firestore > درخواستها، درخواستهای ارائهشده به پایگاه داده شبیهسازیشدهتان را بررسی کنید، ازجمله همه ارزیابیهای Firebase Security Rules که بهعنوان بخشی از برآورده کردن آن درخواستها انجام شده است.
- زبانه گزارشها را بررسی کنید تا مطمئن شوید که تابع شما هنگام بهروزرسانی پایگاه داده با خطایی مواجه نشده است.
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}); });
میتوانید بهراحتی بین کد تابع ابری و ویرایشهای پایگاه داده تعاملی تکرار کنید تا به جریان دادهای که بهدنبال آن هستید برسید، بدون اینکه کد دسترسی به پایگاه داده درونبرنامه را لمس کنید، بازهمگردانی کنید، و مجموعه آزمون را دوباره اجرا کنید.
متصل کردن برنامه به شبیهسازها
وقتی با نمونهسازی تعاملی پیشرفت خوبی داشتید و روی یک طراحی توافق کردید، آماده خواهید بود تا بااستفاده از کیت توسعه نرمافزار مناسب، کد دسترسی به پایگاه داده را به برنامهتان اضافه کنید. همچنان از برگه پایگاه داده و برای عملکردها، از برگه گزارشها در 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);
Swift
let settings = Firestore.firestore().settings settings.host = "127.0.0.1:8080" settings.cacheSettings = MemoryCacheSettings() settings.isSSLEnabled = false Firestore.firestore().settings = settings
Unity
FirebaseFirestore db = FirebaseFirestore.DefaultInstance; // Connects to the Firestore Emulator running on port 8080 db.Settings.Host = "127.0.0.1:8080"; db.Settings.SslEnabled = false;
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
- متصل کردن برنامه به شبیهساز Cloud Functions
- Firebase Extensions را ارزیابی کنید و درعینحال هزینههای صورتحساب را با شبیهساز Extensions به حداقل برسانید
بعد چه میشود؟
حتماً موضوعات مربوط به شبیهسازهای خاص پیوندشده در بالا را بخوانید. سپس:
- برای مجموعهای از ویدیوهای گلچینشده و مثالهای دقیق نحوه انجام کار، فهرست پخش آموزشی شبیهسازهای Firebase را دنبال کنید.
- موارد استفاده پیشرفته شامل آزمایش «قوانین امنیتی» و «کیت توسعه نرمافزار آزمایش Firebase» را بررسی کنید: آزمایش قوانین امنیتی (Cloud Firestore) ، آزمایش قوانین امنیتی (Realtime Database)، و آزمایش قوانین امنیتی (Cloud Storage for Firebase).