ก่อนใช้โปรแกรมจำลอง Extensions กับแอป โปรดตรวจสอบว่าคุณเข้าใจเวิร์กโฟลว์โดยรวมของ Firebase Local Emulator Suite และติดตั้งและกำหนดค่า Local Emulator Suite รวมถึงตรวจสอบคำสั่ง CLI แล้ว
นอกจากนี้ คู่มือนี้ยังถือว่าคุณคุ้นเคยกับ Firebase Extensions และวิธีใช้ในแอป Firebase ด้วย
ฉันใช้โปรแกรมจำลอง Extensions ทำอะไรได้บ้าง
โปรแกรมจำลอง Extensions ช่วยให้คุณติดตั้งและจัดการส่วนขยายในสภาพแวดล้อมภายในที่ปลอดภัย และเข้าใจความสามารถของส่วนขยายได้ดียิ่งขึ้น พร้อมทั้งลดค่าใช้จ่ายในการเรียกเก็บเงิน โปรแกรมจำลองจะเรียกใช้ฟังก์ชันของส่วนขยายในเครื่อง รวมถึงฟังก์ชันที่ทริกเกอร์เหตุการณ์ในเบื้องหลังโดยใช้โปรแกรมจำลองสำหรับ Cloud Firestore, Realtime Database, Cloud Storage for Firebase, Authentication และ Pub/Sub และฟังก์ชันที่ทริกเกอร์ Eventarc ซึ่งติดตั้งใช้งานใน Cloud Functions v2
เลือกโปรเจ็กต์ Firebase
Firebase Local Emulator Suite จะจำลองผลิตภัณฑ์สำหรับโปรเจ็กต์ Firebase รายการเดียว
หากต้องการเลือกโปรเจ็กต์ที่จะใช้ ก่อนเริ่มโปรแกรมจำลอง ให้เรียกใช้ firebase use ในไดเรกทอรีที่ใช้งานอยู่ของ CLI หรือจะส่งแฟล็ก --project ไปยังคำสั่งโปรแกรมจำลองแต่ละคำสั่งก็ได้
Local Emulator Suite รองรับการจำลองโปรเจ็กต์ Firebase จริงและโปรเจ็กต์เดโม
| ประเภทโปรเจ็กต์ | ฟีเจอร์ | ใช้กับโปรแกรมจำลอง |
|---|---|---|
| เรียล |
โปรเจ็กต์ Firebase จริงคือโปรเจ็กต์ที่คุณสร้างและกำหนดค่า (โดยส่วนใหญ่จะผ่านคอนโซล Firebase) โปรเจ็กต์จริงมีทรัพยากรที่ใช้งานอยู่ เช่น อินสแตนซ์ฐานข้อมูล บัケットพื้นที่เก็บข้อมูล ฟังก์ชัน หรือทรัพยากรอื่นๆ ที่คุณตั้งค่าไว้สำหรับโปรเจ็กต์ Firebase นั้น |
เมื่อทำงานกับโปรเจ็กต์ Firebase จริง คุณสามารถเรียกใช้โปรแกรมจำลองสำหรับผลิตภัณฑ์ที่รองรับรายการใดก็ได้หรือทั้งหมด สำหรับผลิตภัณฑ์ที่คุณไม่ได้จำลอง แอปและโค้ดจะโต้ตอบกับทรัพยากรที่ใช้งานอยู่ (อินสแตนซ์ฐานข้อมูล, บัケットพื้นที่เก็บข้อมูล, ฟังก์ชัน ฯลฯ) |
| เดโม |
โปรเจ็กต์ Firebase สาธิตไม่มีการกำหนดค่า Firebase จริงและไม่มีทรัพยากรที่ใช้งานอยู่ โดยปกติแล้วโปรเจ็กต์เหล่านี้จะเข้าถึงผ่าน Codelab หรือบทแนะนำอื่นๆ รหัสโปรเจ็กต์สำหรับโปรเจ็กต์เดโมจะมีคำนำหน้า |
เมื่อทำงานกับโปรเจ็กต์ Firebase สาธิต แอปและโค้ดของคุณจะโต้ตอบกับโปรแกรมจำลองเท่านั้น หากแอปพยายามโต้ตอบกับทรัพยากรที่โปรแกรมจำลองไม่ได้ทำงานอยู่ โค้ดนั้นจะทำงานไม่สำเร็จ |
เราขอแนะนำให้คุณใช้โปรเจ็กต์เดโมเมื่อใดก็ตามที่เป็นไปได้ สิทธิประโยชน์มีดังนี้
- ตั้งค่าได้ง่ายขึ้น เนื่องจากคุณสามารถเรียกใช้โปรแกรมจำลองได้โดยไม่ต้องสร้างโปรเจ็กต์ Firebase
- ความปลอดภัยที่เข้มงวดขึ้น เนื่องจากหากโค้ดเรียกใช้ทรัพยากรที่ไม่ได้จำลอง (เวอร์ชันที่ใช้งานจริง) โดยไม่ตั้งใจ จะไม่มีโอกาสเกิดการเปลี่ยนแปลงข้อมูล การใช้งาน และการเรียกเก็บเงิน
- การรองรับการใช้งานออฟไลน์ที่ดีขึ้น เนื่องจากไม่จำเป็นต้องเข้าถึงอินเทอร์เน็ตเพื่อดาวน์โหลดการกำหนดค่า SDK
ติดตั้งและประเมินส่วนขยาย
การใช้โปรแกรมจำลอง Extensions เพื่อประเมินว่าส่วนขยายตรงกับความต้องการของคุณหรือไม่นั้นเป็นเรื่องที่ตรงไปตรงมา
สมมติว่าคุณสนใจส่วนขยาย Trigger Email (firestore-send-email) แม้ว่าเวิร์กโฟลว์ต่อไปนี้จะครอบคลุมส่วนขยายทั้งหมดก็ตาม เมื่อเรียกใช้ด้วยโปรแกรมจำลองในเครื่อง Trigger Email จะใช้โปรแกรมจำลอง Cloud Firestore และ Cloud Functions โดยอัตโนมัติ
วิธีประเมินส่วนขยายในเครื่อง
เพิ่มส่วนขยายลงในไฟล์ Manifest ของส่วนขยายในเครื่อง ไฟล์ Manifest ของส่วนขยายคือรายการอินสแตนซ์ของส่วนขยายและการกำหนดค่า
firebase ext:install --local firebase/firestore-send-email
การเรียกใช้คำสั่งข้างต้นจะแจ้งให้คุณกำหนดค่าส่วนขยาย
firebase/firestore-send-emailเวอร์ชันล่าสุดและบันทึกการกำหนดค่าลงในไฟล์ Manifest แต่จะไม่ทำให้การกำหนดค่าใช้งานได้ในโปรเจ็กต์ ดูข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ได้ที่หัวข้อจัดการการกำหนดค่าส่วนขยายด้วยไฟล์ Manifestเริ่ม Local Emulator Suite ตามปกติ
firebase emulators:start
ตอนนี้ Local Emulator Suite จะดาวน์โหลดซอร์สโค้ดของส่วนขยายนั้นไปยัง ~/.cache/firebase/extensions โดยใช้อินสแตนซ์ส่วนขยาย firestore-send-email ที่แสดงในไฟล์ Manifest เมื่อดาวน์โหลดแหล่งที่มาแล้ว Local Emulator Suite จะเริ่มทำงาน และคุณจะเรียกใช้ฟังก์ชันที่ทริกเกอร์ในเบื้องหลังของส่วนขยายและเชื่อมต่อแอปกับ Local Emulator Suite เพื่อทดสอบการผสานรวมกับแอปได้
คุณสามารถใช้ Emulator Suite UI เพื่อเพิ่มข้อมูลลงในคอลเล็กชันเอกสารอีเมลและตั้งค่าทรัพยากรแบ็กเอนด์อื่นๆ ตามที่ส่วนขยายทริกเกอร์อีเมลกำหนด
หรือสำหรับสภาพแวดล้อมการทดสอบแบบไม่โต้ตอบ เช่น เวิร์กโฟลว์การรวมอย่างต่อเนื่อง คุณสามารถเขียนสคริปต์ทดสอบเพื่อประเมินส่วนขยายที่ป้อนข้อมูล Cloud Firestore ที่จำเป็นและทริกเกอร์ฟังก์ชัน รวมถึงขั้นตอนอื่นๆ จากนั้นคุณจะเรียกใช้ Local Emulator Suite เพื่อเรียกใช้สคริปต์ทดสอบ ดังนี้
firebase emulators:exec my-test.shความแตกต่างระหว่างการทดสอบด้วยโปรแกรมจำลอง Extensions กับเวอร์ชันที่ใช้งานจริง
โปรแกรมจำลอง Extensions ช่วยให้คุณทดสอบส่วนขยายในลักษณะที่ใกล้เคียงกับประสบการณ์การใช้งานจริงอย่างมาก อย่างไรก็ตาม มีความแตกต่างบางประการจากลักษณะการทำงานในเวอร์ชันที่ใช้งานจริง
Cloud IAM
Firebase Emulator Suite ไม่พยายามจำลองหรือปฏิบัติตามพฤติกรรมที่เกี่ยวข้องกับ IAM สำหรับการเรียกใช้ โปรแกรมจำลองจะปฏิบัติตามกฎความปลอดภัยของ Firebase ที่ระบุไว้ แต่ในสถานการณ์ที่ปกติจะใช้ IAM เช่น เพื่อตั้งค่าบัญชีบริการที่เรียกใช้ Cloud Functions และสิทธิ์ โปรแกรมจำลองจะกำหนดค่าไม่ได้และจะใช้บัญชีที่ใช้ได้ทั่วโลกในคอมพิวเตอร์สำหรับการพัฒนาซอฟต์แวร์ของคุณ ซึ่งคล้ายกับการเรียกใช้สคริปต์ในเครื่องโดยตรง
ข้อจำกัดประเภทการทริกเกอร์
ปัจจุบัน Firebase Local Emulator Suite รองรับเฉพาะฟังก์ชันที่ทริกเกอร์ด้วยคำขอ HTTP, ทริกเกอร์เหตุการณ์ที่กำหนดเองของ Eventarc สำหรับส่วนขยาย และฟังก์ชันที่ทริกเกอร์ด้วยเหตุการณ์ในเบื้องหลังสำหรับ Cloud Firestore, Realtime Database, Cloud Storage for Firebase, Authentication และ Pub/Sub หากต้องการประเมินส่วนขยายที่ใช้ฟังก์ชันที่ทริกเกอร์ประเภทอื่นๆ คุณต้องติดตั้งส่วนขยายในโปรเจ็กต์ Firebase ทดสอบ
ฉันควรทำอย่างไรต่อไป
- ดูชุดวิดีโอที่คัดสรรมาและตัวอย่างวิธีการโดยละเอียดได้ที่เพลย์ลิสต์การฝึกอบรมเกี่ยวกับโปรแกรมจำลอง Firebase