การกำหนดรุ่น การนำไปใช้งาน และการประสานงาน
นำรีโมตไปใช้งานแยกกันด้วยการกำหนดรุ่นเชิงความหมาย จัดการข้อขัดแย้งของไลบรารีที่ใช้ร่วมกัน และประสานการออกรุ่น
การกำหนดรุ่น การนำไปใช้งาน และการประสานงาน เป็นบทเรียน React Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน React Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน
การนำไปใช้งานแยกกัน: คุณค่าหลัก
คุณค่าหลักของ Module Federation คือการนำไปใช้งานแยกกัน: ทีมหนึ่งสามารถอัปเดต ทดสอบ และนำรีโมตไปใช้งานได้โดยไม่ต้องประสานงานกับทีมโฮสต์หรือทำให้ต้องนำโฮสต์ไปใช้งานใหม่ โฮสต์จะรับการเปลี่ยนแปลงโดยอัตโนมัติในครั้งถัดไปที่โหลด remoteEntry.js จาก URL ของรีโมต
การกำหนดรุ่นใน URL ของรีโมต
แทนที่จะให้บริการ remoteEntry.js ที่ URL ตายตัว (ซึ่งเปลี่ยนทุกครั้งที่นำไปใช้งานใหม่) ให้ใส่แฮชของเนื้อหาไว้ใน URL: remoteEntry.[hash].js วิธีนี้ทำให้การนำไปใช้งานแต่ละครั้งไม่เปลี่ยนแปลงและระบุได้แน่นอน URL เก่ายังคงใช้งานได้ และโฮสต์จะอ้างอิงแฮชใหม่เมื่ออัปเดตไปยังการนำไปใช้งานครั้งใหม่แล้ว URL ที่ไม่เปลี่ยนแปลงช่วยให้ CDN แคชข้อมูลได้อย่างเข้มข้น
แฟล็กฟีเจอร์ในระดับโครงสร้างพื้นฐาน
เนื่องจากโฮสต์ค้นหารีโมตผ่าน URL คุณจึงทำการทดสอบ A/B ในระดับโครงสร้างพื้นฐานได้ โดยให้ผู้ใช้แต่ละกลุ่มได้รับ URL ของ remoteEntry.js ที่แตกต่างกัน (ซึ่งชี้ไปยังรีโมตคนละรุ่น) วิธีนี้ทำให้สามารถนำไมโครฟรอนต์เอนด์ไปใช้งานแบบคานารีได้อย่างแท้จริง โดยไม่ต้องมีตรรกะของแฟล็กฟีเจอร์ในโค้ดแอปพลิเคชัน
แนวทางใช้รายการเพื่อการค้นหาที่ยืดหยุ่น
แทนที่จะเขียน URL ของรีโมตลงในการกำหนดค่า Webpack แบบตายตัว โฮสต์จะดึงรายการ JSON เมื่อเริ่มต้นการทำงาน: GET /federation-manifest.json returns { buttonApp: 'https://cdn.example.com/button/remoteEntry.abc123.js' } หากต้องการเปลี่ยนรุ่นที่โฮสต์ใช้ ให้อัปเดตรายการ โดยไม่ต้องสร้างโฮสต์ใหม่
การย้อนกลับผ่านการอัปเดตรายการ
เมื่อการนำรีโมตรุ่นใหม่ไปใช้งานทำให้เกิดข้อผิดพลาด การย้อนกลับทำได้ทันที โดยอัปเดต federation-manifest.json ให้ชี้ไปยัง URL ของ remoteEntry.js รุ่นก่อนหน้า โฮสต์จะเริ่มใช้รุ่นเก่าในรอบคำขอถัดไปทันที ไม่ต้องสร้างโฮสต์ใหม่ ไม่ต้องย้อนกลับโฮสต์ และไม่ต้องประสานงานกัน
Module Federation 2.0 ของ Webpack
Module Federation 2.0 (แพ็กเกจ @module-federation/enhanced) เพิ่มการปรับปรุงสำคัญหลายด้าน ได้แก่ การรองรับ TypeScript ที่ดีขึ้นพร้อมการสร้างชนิดข้อมูลอัตโนมัติจากแมนนิเฟสต์ของรีโมต ส่วนติดต่อโปรแกรมแบบปลั๊กอินขณะรันไทม์สำหรับตรรกะการโหลดแบบกำหนดเอง และการจัดการขอบเขตที่ใช้ร่วมกันที่มีประสิทธิภาพยิ่งขึ้นสำหรับสถานการณ์การต่อรองเวอร์ชันที่ซับซ้อน
vite-plugin-federation สำหรับ Vite
แพ็กเกจ vite-plugin-federation นำ Module Federation มาสู่โปรเจกต์ที่ใช้ Vite โดยใช้ส่วนติดต่อโปรแกรมการกำหนดค่าที่คล้ายกับ ModuleFederationPlugin ของ Webpack แพ็กเกจนี้ใช้ร่วมกันได้ทั้งกับรีโมตของ Vite และโฮสต์ของ Webpack รวมถึงในทางกลับกัน ทำให้ทีมต่าง ๆ ย้ายไปใช้ Vite ได้ทีละขั้นโดยไม่ต้องละทิ้ง Module Federation
รีโมตแบบไดนามิกขณะรันไทม์
สำหรับสถาปัตยกรรมที่เปลี่ยนแปลงอยู่เสมอ คุณสามารถกำหนด URL ของรีโมตทั้งหมดขณะรันไทม์ได้: import(remoteRegistry[featureName]) โดย remoteRegistry จะถูกเติมข้อมูลจากการเรียกส่วนติดต่อโปรแกรม วิธีนี้ทำให้เกิดสถาปัตยกรรมลักษณะปลั๊กอิน ซึ่งสามารถเพิ่มไมโครฟรอนต์เอนด์ใหม่ได้โดยไม่ต้องสร้างแอปเชลล์ใหม่
แอปเชลล์ในฐานะตัวประสานงาน
หน้าที่หลักของแอปเชลล์คือการประสานงาน: อ่านแมนนิเฟสต์ของรีโมต เริ่มต้นรันไทม์ของ Module Federation ลงทะเบียนโมดูลรีโมตภายใต้เส้นทางที่มีชื่อ และแสดงผลรีโมตที่เหมาะสมตาม URL ปัจจุบัน แอปเชลล์ถูกออกแบบให้มีตรรกะบางโดยตั้งใจ—รู้ว่าจะโหลดอะไร ไม่ใช่รู้ว่าจะแสดงผลอย่างไร
การตรวจสอบ Module Federation ในสภาพแวดล้อมจริง
เพิ่มการตรวจสอบประสิทธิภาพในการโหลดรีโมต: ห่อการนำเข้ารีโมตด้วย try/catch เพื่อจัดการความล้มเหลวในการโหลดอย่างเหมาะสม (แสดงส่วนติดต่อผู้ใช้สำรองหากรีโมตไม่พร้อมใช้งาน) วัดเวลาที่ใช้ดาวน์โหลด remoteEntry.js และชังก์ของคอมโพเนนต์ และแจ้งเตือนหากเวลาโหลดรีโมตเกินค่าขีดจำกัด (ซึ่งบ่งชี้ถึงปัญหาของ CDN)
กระบวนการ CI/CD ฉบับสมบูรณ์
กระบวนการ CI/CD ของ Module Federation ที่พัฒนาเต็มที่มีลักษณะดังนี้: ทีมรีโมตส่งคอมมิต → CI สร้างรีโมต → อัปโหลด remoteEntry.[hash].js ที่ไม่เปลี่ยนแปลงไปยัง CDN → อัปเดต federation-manifest.json → โฮสต์รับรีโมตใหม่ในการร้องขอครั้งถัดไปของผู้ใช้ แต่ละขั้นตอนทำงานโดยอัตโนมัติ และทีมโฮสต์ไม่ต้องเข้ามาเกี่ยวข้องกับการนำรีโมตไปใช้งาน
กลยุทธ์การย้อนกลับของ Module Federation
วิธีที่เร็วที่สุดในการย้อนกลับการนำรีโมตของ Module Federation ที่มีปัญหาไปใช้งานคืออะไร
สรุปบทเรียน
Module Federation ช่วยให้การนำไปใช้งานเป็นอิสระอย่างแท้จริง: รีโมตสามารถนำไปใช้งานได้โดยไม่ต้องสร้างโฮสต์ใหม่ และโฮสต์จะค้นพบเวอร์ชันใหม่โดยอัตโนมัติ ใช้ URL ของรีโมตที่มีแฮชของเนื้อหาเพื่อการแคชบน CDN ที่ไม่เปลี่ยนแปลง และใช้แมนนิเฟสต์แบบไดนามิกเพื่อกำหนดเส้นทางเวอร์ชันอย่างยืดหยุ่นและย้อนกลับได้ทันที vite-plugin-federation นำความสามารถเหล่านี้มาสู่ Vite และการนำเข้ารีโมตแบบไดนามิกช่วยให้เกิดสถาปัตยกรรมลักษณะปลั๊กอิน แอปเชลล์ทำหน้าที่ประสานงานการโหลดรีโมต โดยคงโครงสร้างของตัวเองให้บางอย่างตั้งใจ
เรียนรู้ React ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 88
- บทเรียน
- 324
คำถามที่พบบ่อย
บทเรียน “การกำหนดรุ่น การนำไปใช้งาน และการประสานงาน” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การกำหนดรุ่น การนำไปใช้งาน และการประสานงาน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส React Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การกำหนดรุ่น การนำไปใช้งาน และการประสานงาน”
นำรีโมตไปใช้งานแยกกันด้วยการกำหนดรุ่นเชิงความหมาย จัดการข้อขัดแย้งของไลบรารีที่ใช้ร่วมกัน และประสานการออกรุ่น คุณปฏิบัติ React Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน React Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน React Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “การกำหนดรุ่น การนำไปใช้งาน และการประสานงาน” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน React Academy นี้ได้ไหม
ได้ บทเรียน React Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การรวมโมดูล: การนำเข้าแบบไดนามิกขณะทำงาน
- การกำหนดค่าแอปรีแอ็กต์โฮสต์และรีโมต
- การแชร์สถานะและการกำหนดเส้นทางระหว่างรีโมต
- การกำหนดรุ่น การนำไปใช้งาน และการประสานงาน