ก่อนใช้โปรแกรมจำลอง 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 ในไดเรกทอรีทํางาน หรือจะส่งผ่าน Flag --project
ไปยังคำสั่งของโปรแกรมจำลองแต่ละรายการก็ได้
Local Emulator Suite รองรับการจําลองโปรเจ็กต์ Firebase จริงและโปรเจ็กต์สาธิต
ประเภทโปรเจ็กต์ | ฟีเจอร์ | ใช้กับโปรแกรมจำลอง |
---|---|---|
จริง |
โปรเจ็กต์ Firebase จริงคือโปรเจ็กต์ที่คุณสร้างและกำหนดค่า (ส่วนใหญ่จะผ่านคอนโซล Firebase) โปรเจ็กต์จริงจะมีทรัพยากรที่เผยแพร่อยู่ เช่น อินสแตนซ์ฐานข้อมูล ที่เก็บข้อมูลของพื้นที่เก็บข้อมูล ฟังก์ชัน หรือทรัพยากรอื่นๆ ที่คุณตั้งค่าไว้สำหรับโปรเจ็กต์ Firebase นั้น |
เมื่อทํางานกับโปรเจ็กต์ Firebase จริง คุณสามารถเรียกใช้โปรแกรมจําลองสําหรับผลิตภัณฑ์ที่รองรับรายการใดรายการหนึ่งหรือทั้งหมด สำหรับผลิตภัณฑ์ที่คุณไม่ได้จําลอง แอปและโค้ดจะโต้ตอบกับทรัพยากรจริง (อินสแตนซ์ฐานข้อมูล ที่เก็บข้อมูล ฟังก์ชัน ฯลฯ) |
เดโม |
โปรเจ็กต์ Firebase สาธิตไม่มีการกำหนดค่า Firebase จริงและไม่มีทรัพยากรที่ใช้งานอยู่ โดยปกติแล้วโปรเจ็กต์เหล่านี้จะเข้าถึงได้ผ่าน Codelab หรือบทแนะนำอื่นๆ รหัสโปรเจ็กต์ของโปรเจ็กต์เดโมจะมีคำนำหน้า |
เมื่อใช้โปรเจ็กต์ Firebase สาธิต แอปและโค้ดจะโต้ตอบกับโปรแกรมจำลองเท่านั้น หากแอปพยายามโต้ตอบกับทรัพยากรที่อีมูเลเตอร์ไม่ได้ทำงานอยู่ โค้ดดังกล่าวจะใช้งานไม่ได้ |
เราขอแนะนำให้คุณใช้โปรเจ็กต์เดโมเมื่อเป็นไปได้ สิทธิประโยชน์มีดังนี้
- ตั้งค่าได้ง่ายขึ้นเนื่องจากคุณสามารถเรียกใช้โปรแกรมจำลองได้โดยไม่ต้องสร้างโปรเจ็กต์ Firebase
- ความปลอดภัยที่มากขึ้น เนื่องจากหากโค้ดเรียกใช้ทรัพยากรที่ไม่ใช่การจําลอง (เวอร์ชันที่ใช้งานจริง) โดยไม่ได้ตั้งใจ จะไม่มีการเปลี่ยนแปลงข้อมูล การใช้งาน และการเรียกเก็บเงิน
- รองรับการทำงานแบบออฟไลน์ได้ดียิ่งขึ้น เนื่องจากไม่จําเป็นต้องเข้าถึงอินเทอร์เน็ตเพื่อดาวน์โหลดการกําหนดค่า SDK
ติดตั้งและประเมินส่วนขยาย
การใช้Extensionsโปรแกรมจําลองเพื่อประเมินว่าส่วนขยายตรงกับความต้องการของคุณหรือไม่นั้นทําได้ง่ายๆ
สมมติว่าคุณสนใจใช้ส่วนขยายสำหรับอีเมลทริกเกอร์ (firestore-send-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 จะไม่พยายามจำลองหรือทำตามลักษณะการทำงานที่เกี่ยวข้องกับ IAM สำหรับการเรียกใช้ โปรแกรมจำลองจะเป็นไปตามกฎการรักษาความปลอดภัยของ Firebase ที่ระบุไว้ แต่ในกรณีที่ปกติแล้วจะใช้ IAM เช่น เพื่อตั้งค่าบัญชีบริการที่เรียกใช้ Cloud Functions และสิทธิ์ต่างๆ โปรแกรมจำลองจะไม่สามารถกําหนดค่าได้ แต่จะใช้บัญชีที่พร้อมใช้งานทั่วโลกในเครื่องของนักพัฒนาซอฟต์แวร์ ซึ่งคล้ายกับการเรียกใช้สคริปต์ในเครื่องโดยตรง
ข้อจํากัดประเภททริกเกอร์
ปัจจุบัน Firebase Local Emulator Suite รองรับเฉพาะฟังก์ชันที่ทริกเกอร์โดยคำขอ HTTP, ทริกเกอร์เหตุการณ์ที่กําหนดเองของ Eventarc สําหรับส่วนขยาย และฟังก์ชันที่ทริกเกอร์เหตุการณ์เบื้องหลังสําหรับ Cloud Firestore, Realtime Database, Cloud Storage for Firebase, Authentication และ Pub/Sub หากต้องการประเมินส่วนขยายที่ใช้ฟังก์ชันที่ทริกเกอร์ประเภทอื่นๆ คุณต้องติดตั้งส่วนขยายในโปรเจ็กต์ Firebase ทดสอบ
ฉันควรทำอย่างไรต่อไป
- หากต้องการดูชุดวิดีโอที่มีการดูแลจัดการและตัวอย่างวิธีการโดยละเอียด ให้ทำตามเพลย์ลิสต์การฝึกของ Firebase Emulators