0Pricing
Frontend Academy · บทเรียน

ระบบปลั๊กอิน: app.use()

สร้างปลั๊กอิน Vue เป็นออบเจ็กต์ที่มีเมธอด install ลงทะเบียนคอมโพเนนต์และคำสั่งแบบโกลบอล และให้ค่ากับทั้งแอปพลิเคชัน

ระบบปลั๊กอิน: app.use() เป็นบทเรียน Frontend Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Frontend Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Frontend Academy มีบทเรียนทั้งหมด 4 บทเรียน

Vue Plugin คืออะไร

Plugin คือฟังก์ชันการทำงานที่นำกลับมาใช้ซ้ำได้และติดตั้งลงในแอป Vue เช่น คอมโพเนนต์ส่วนกลาง directive การ provide ค่า และตัวช่วยรูปแบบพร็อพเพอร์ตีต้นแบบ เช่น เราเตอร์ i18n และ pinia Plugin คือวิธีที่ไลบรารีใช้ผสานการทำงานเข้ากับ Vue

รูปแบบของ Plugin

Plugin คืออ็อบเจ็กต์ที่มีเมธอด install(app, options) หรือเป็นฟังก์ชันที่ทำหน้าที่เป็นเมธอด install

// MyPlugin.ts
export default {
  install(app, options) {
    // Configure things here
  }
};

การติดตั้ง Plugin

เรียก app.use(plugin, options) บนอินสแตนซ์แอป Vue

import { createApp } from 'vue';
import App from './App.vue';
import MyPlugin from './plugins/MyPlugin';

const app = createApp(App);
app.use(MyPlugin, { theme: 'dark' });
app.mount('#app');

กรณีใช้งาน Plugin: คอมโพเนนต์ส่วนกลาง

ลงทะเบียนคอมโพเนนต์ขนาดเล็กจำนวนมากให้เป็นคอมโพเนนต์ส่วนกลาง เพื่อให้ผู้ใช้ไม่ต้องนำเข้าแต่ละคอมโพเนนต์เอง

// plugins/iconPack.ts
import IconChevron from './IconChevron.vue';
import IconClose from './IconClose.vue';
import IconUser from './IconUser.vue';

export default {
  install(app) {
    app.component('IconChevron', IconChevron);
    app.component('IconClose', IconClose);
    app.component('IconUser', IconUser);
  }
};

// main.ts
app.use(iconPack);

กรณีใช้งาน Plugin: Directive ส่วนกลาง

ลงทะเบียน directive แบบกำหนดเองเพียงครั้งเดียว แล้วทำให้พร้อมใช้งานทั่วทั้งแอป

export default {
  install(app) {
    app.directive('focus', { mounted: (el) => el.focus() });
    app.directive('click-outside', clickOutsideDirective);
  }
};

กรณีใช้งาน Plugin: provide()

Provide ค่าที่ใช้ทั่วทั้งแอป เพื่อให้คอมโพเนนต์ใด ๆ สามารถ inject ได้ ซึ่งพบได้บ่อยสำหรับไคลเอนต์ API และการกำหนดค่า

import type { InjectionKey } from 'vue';
import { ApiClient } from './ApiClient';

export const ApiKey: InjectionKey<ApiClient> = Symbol('api');

export default {
  install(app, { baseURL }) {
    const api = new ApiClient({ baseURL });
    app.provide(ApiKey, api);
  }
};

// Anywhere:
const api = inject(ApiKey)!;

Plugin จริง: Pinia, Vue Router และ i18n

ไลบรารีหลักในระบบนิเวศ Vue ล้วนเป็น Plugin

import { createPinia } from 'pinia';
import router from './router';
import { createI18n } from 'vue-i18n';

const app = createApp(App);
app.use(createPinia());
app.use(router);
app.use(createI18n({ /* ... */ }));

ตัวเลือกของ Plugin

Plugin รับตัวเลือกเพื่อกำหนดค่าพฤติกรรมขณะติดตั้ง

app.use(MyPlugin, {
  apiUrl: 'https://api.example.com',
  enableLogs: true,
  theme: 'dark'
});

// Inside the plugin:
install(app, options) {
  if (options.enableLogs) console.log('plugin installed');
}

การเพิ่มชนิดข้อมูลด้วย TypeScript

สำหรับ globalProperties หรือตัวช่วยการ inject ให้เพิ่มชนิดข้อมูลของ Vue เพื่อให้ผู้ใช้ได้รับการเติมโค้ดอัตโนมัติ

// types.d.ts
declare module '@vue/runtime-core' {
  interface ComponentCustomProperties {
    $api: ApiClient;
  }
}

// In plugin:
install(app) {
  app.config.globalProperties.$api = new ApiClient();
}

globalProperties — รูปแบบเดิม

app.config.globalProperties.$foo เปิดเผยค่าเป็น this.$foo ในคอมโพเนนต์ Options API และเทมเพลต ส่วน Composition API นิยมใช้ inject()

การติดตั้งแบบทำซ้ำได้โดยไม่เปลี่ยนผลลัพธ์

อย่าทำให้แอปล่มเมื่อติดตั้งซ้ำ ให้ตรวจสอบแฟล็ก หรือใช้คีย์การ provide ที่สร้างจาก Symbol ซึ่งจะขจัดการซ้ำให้โดยธรรมชาติ

การเขียน Plugin ของคุณเอง

หากมีหลายแอปใช้การกำหนดค่าร่วมกัน เช่น ตัวห่อระบบยืนยันตัวตนหรือการตั้งค่าการวัดผล ให้รวมสิ่งเหล่านี้เป็น Plugin การเผยแพร่ไปยัง npm พร้อมลายเซ็น clean install(app, options) เป็นแนวทางแบบ Vue สำหรับส่งมอบฟังก์ชันการทำงานที่นำกลับมาใช้ซ้ำได้

ตรวจสอบความเข้าใจอย่างรวดเร็ว

คุณเรียกเมธอดใดบนอินสแตนซ์แอป Vue เพื่อติดตั้ง Plugin

ทบทวน: Vue Plugins

Plugin = อ็อบเจ็กต์ที่มี install(app, options) ติดตั้งผ่าน app.use(plugin, options) ใช้สำหรับลงทะเบียนคอมโพเนนต์ส่วนกลาง directive การ provide ค่า และการกำหนดค่าไลบรารี Pinia, Vue Router และ i18n ล้วนเป็น Plugin เพิ่มชนิดข้อมูลของ ComponentCustomProperties สำหรับพร็อพเพอร์ตีที่มีคำนำหน้า $ และทำให้ install ทำงานซ้ำได้โดยไม่เปลี่ยนผลลัพธ์

คำถามที่พบบ่อย

บทเรียน “ระบบปลั๊กอิน: app.use()” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ระบบปลั๊กอิน: app.use()” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Frontend Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Frontend Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ระบบปลั๊กอิน: app.use()”

สร้างปลั๊กอิน Vue เป็นออบเจ็กต์ที่มีเมธอด install ลงทะเบียนคอมโพเนนต์และคำสั่งแบบโกลบอล และให้ค่ากับทั้งแอปพลิเคชัน คุณปฏิบัติ Frontend Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Frontend Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Frontend Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “ระบบปลั๊กอิน: app.use()” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Frontend Academy นี้ได้ไหม

ได้ บทเรียน Frontend Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. provide() และ inject() สำหรับการฉีดการพึ่งพา
  2. คอมโพเนนต์อะซิงก์และ Suspense
  3. คำสั่งกำหนดเอง
  4. ระบบปลั๊กอิน: app.use()
← กลับไปที่ Frontend Academy