ปลั๊กอิน Vite Federation
@originjs/vite-plugin-federation การตั้งค่าผู้ผลิต/ผู้ใช้ และการนำเข้า remotes แบบไดนามิก
ปลั๊กอิน Vite Federation เป็นบทเรียน Vue Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Vue Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Vue Academy มีบทเรียนทั้งหมด 4 บทเรียน
การเชื่อมโมดูลบน Vite
Module Federation เริ่มต้นใน Webpack แต่แอป Vue จำนวนมากใช้ Vite ปลั๊กอินจากชุมชน @originjs/vite-plugin-federation นำความสามารถด้านการเชื่อมโมดูลมาใช้กับแอปที่สร้างและนำโมดูลไปใช้บน Vite
การติดตั้งปลั๊กอิน
เพิ่มปลั๊กอินลงในทั้งแอปตัวผลิต (รีโมต) และแอปตัวใช้ (โฮสต์)
// terminal
// npm install -D @originjs/vite-plugin-federationการตั้งค่าตัวผลิต
ใน ตัวผลิต (รีโมต) ให้เพิ่ม federation ใน vite.config.ts พร้อมระบุ name และออบเจ็กต์ exposes ที่จับคู่ชื่อสาธารณะกับ files ภายในเครื่อง
import federation from "@originjs/vite-plugin-federation"
export default {
plugins: [
federation({
name: "remote_app",
filename: "remoteEntry.js",
exposes: {
"./Widget": "./src/components/Widget.vue",
},
}),
],
}การตั้งค่าการสร้างสำหรับการเชื่อมโมดูล
ปลั๊กอินต้องใช้เป้าหมายการสร้างที่ทันสมัย และในการตั้งค่าบางแบบต้องปิดการย่อโมดูล กำหนดเป้าหมายการสร้างเพื่อให้การนำเข้าแบบไดนามิกและการรอผลระดับบนสุดทำงานได้
export default {
plugins: [federation({ /* ... */ })],
build: {
target: "esnext",
},
}ออบเจ็กต์สำหรับเปิดเผยโมดูล
เช่นเดียวกับ Webpack คีย์คือเส้นทางนำเข้าสาธารณะที่ผู้ใช้โมดูลใช้ ส่วนค่าคือเส้นทางไปยัง files ต้นฉบับภายในเครื่อง ให้เปิดเผยเฉพาะสิ่งที่ทีมอื่นต้องใช้
exposes: {
"./Widget": "./src/components/Widget.vue",
"./useCart": "./src/composables/useCart.ts",
}การตั้งค่าตัวใช้
ใน ตัวใช้ (โฮสต์) ให้เพิ่ม federation พร้อมออบเจ็กต์ remotes ที่จับคู่ชื่อแทนกับ URL ของ remoteEntry.js ของรีโมต
import federation from "@originjs/vite-plugin-federation"
export default {
plugins: [
federation({
name: "host_app",
remotes: {
remote_app: "https://remote.example.com/assets/remoteEntry.js",
},
}),
],
}URL ของ remotes
ค่าดังกล่าวคือ URL เต็มของ remoteEntry.js ที่สร้างขึ้น ในโหมดพัฒนา ให้ชี้ไปยังเซิร์ฟเวอร์แสดงตัวอย่างของรีโมต ส่วนในระบบจริง ให้ชี้ไปยังเส้นทางบน CDN ที่นำไปใช้งานแล้ว
remotes: {
remote_app: "https://remote.example.com/assets/remoteEntry.js",
}การพึ่งพาที่ใช้ร่วมกัน
เพิ่มอาร์เรย์ shared เพื่อให้โฮสต์และรีโมตใช้ไลบรารีทั่วไปเพียงชุดเดียว การใส่ vue ไว้ในรายการเป็นสิ่งสำคัญเพื่อให้มีอินสแตนซ์ Vue เพียงชุดเดียว
federation({
name: "host_app",
remotes: { /* ... */ },
shared: ["vue", "pinia"],
})การใช้ component จากรีโมต
นำเข้าจากชื่อแทนและชื่อที่เปิดเผย ใช้การนำเข้าแบบไดนามิกร่วมกับ defineAsyncComponent เนื่องจากโค้ดจะถูกดึงมาขณะทำงาน
import { defineAsyncComponent } from "vue"
const Widget = defineAsyncComponent(() =>
import("remote_app/Widget")
)การประกาศชนิดข้อมูลสำหรับรีโมต
TypeScript ไม่ทราบชนิดข้อมูลของโมดูลรีโมต คุณต้องประกาศชนิดข้อมูลเหล่านั้นเพื่อให้การนำเข้าผ่านการตรวจสอบชนิดข้อมูล
// remotes.d.ts
declare module "remote_app/Widget" {
import type { DefineComponent } from "vue"
const component: DefineComponent
export default component
}ใช้การแสดงตัวอย่าง ไม่ใช่โหมดพัฒนา สำหรับรีโมต
การเชื่อมโมดูลต้องใช้ remoteEntry.js ที่สร้างแล้ว แต่เซิร์ฟเวอร์พัฒนาของ Vite ไม่ได้สร้างสิ่งนี้ในรูปแบบเดียวกัน ให้สร้างรีโมตแล้วให้บริการด้วย vite preview เพื่อให้โฮสต์ดึงมาใช้ได้
// remote terminal
// vite build && vite preview --port 5001ตรวจสอบความเข้าใจ
ตรวจสอบความเข้าใจของคุณเกี่ยวกับปลั๊กอินการเชื่อมโมดูลของ Vite
ทบทวน
คุณได้เรียนรู้การเชื่อมโมดูลบน Vite ดังนี้:
@originjs/vite-plugin-federationนำ Module Federation มาใช้กับ Vite- การตั้งค่าตัวผลิตระบุ
nameและออบเจ็กต์exposes(ชื่อสาธารณะไปยังfileภายในเครื่อง) - การตั้งค่าตัวใช้ระบุออบเจ็กต์
remotesที่จับคู่ชื่อแทนกับ URL ของremoteEntry.jsของรีโมต - แสดงรายการการพึ่งพาที่ใช้ร่วมกัน (รวมถึง
vue) ไว้ในshared - นำมาใช้ผ่าน
import("alias/Module")แบบไดนามิก แล้วสร้างรีโมตและใช้vite preview
เรียนรู้ HTML ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 42
- บทเรียน
- 156
คำถามที่พบบ่อย
บทเรียน “ปลั๊กอิน Vite Federation” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ปลั๊กอิน Vite Federation” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Vue Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Vue Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ปลั๊กอิน Vite Federation”
@originjs/vite-plugin-federation การตั้งค่าผู้ผลิต/ผู้ใช้ และการนำเข้า remotes แบบไดนามิก คุณปฏิบัติ Vue Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Vue Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Vue Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “ปลั๊กอิน Vite Federation” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Vue Academy นี้ได้ไหม
ได้ บทเรียน Vue Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- หลักการสถาปัตยกรรมไมโครฟรอนต์เอนด์
- Webpack Module Federation กับ Vue
- ปลั๊กอิน Vite Federation
- สถานะร่วมกันระหว่างไมโครฟรอนต์เอนด์