Vue.js คือ ตอนที่ 6 : แนวคิดขั้นสูง (Advanced Concepts)

  1. มิกซ์อิน (Mixins) : นำโค้ดกลับมาใช้ใหม่อย่างสง่างาม
  2. คำสั่งที่กำหนดเอง (Custom Directives): เขียน Vue.js Magic ของคุณเอง
  3. ฟังก์ชัน Render และ JSX: การควบคุมเทมเพลตของคุณ
  4. ปลั๊กอิน (Plugins): การเพิ่มความสามารถของ Vue.js

ในการเดินทางของการทำเว็บ Vue.js และทำแอพ เราตระหนักได้อย่างรวดเร็วว่าเฟรมเวิร์กที่ทรงพลังนี้ให้มากกว่าแค่การทำงานพื้นฐานที่ราบรื่น Vue.js อัดแน่นไปด้วยคุณสมบัติขั้นสูงและฟังก์ชันการทำงานที่ออกแบบมาเพื่อช่วยนักพัฒนาในการทำเว็บ Vue.js และทำแอพที่ซับซ้อน ไดนามิก และบำรุงรักษาได้ วันนี้เราจะมาเจาะลึกแนวคิด Vue.js ขั้นสูง 4 แบบ ได้แก่ มิกซ์อิน คำสั่งที่กำหนดเอง ฟังก์ชัน Render และปลั๊กอิน

1. มิกซ์อิน (Mixins) : นำโค้ดกลับมาใช้ใหม่อย่างสง่างาม

เมื่อแอปพลิเคชันมีความซับซ้อนมากขึ้น ความสามารถในการนำกลับมาใช้ใหม่จะกลายเป็นสิ่งสำคัญยิ่ง มิกซ์อินของ Vue.js เป็นวิธีที่ยืดหยุ่นในการแจกจ่ายฟังก์ชันที่ใช้ซ้ำได้สำหรับคอมโพเนนต์ของ Vue วัตถุผสมสามารถมีตัวเลือกส่วนประกอบใดๆ เมื่อคอมโพเนนต์ใช้มิกซ์อิน ตัวเลือกทั้งหมดในมิกซ์อินจะถูก “ผสม” เข้ากับตัวเลือกของคอมโพเนนต์เอง

ลองนึกภาพว่าคุณกำลังทำเว็บ Vue.js และทำแอพและพบว่าคอมโพเนนต์หลายรายการจำเป็นต้องเข้าถึงข้อมูล คุณสมบัติที่คำนวณ วิธีการ หรือวงจรชีวิตเดียวกัน แทนที่จะเขียนโค้ดเดียวกันในหลายๆ ที่ (ซึ่งน่าจะน่าเบื่อและเกิดข้อผิดพลาดได้ง่าย) คุณสามารถกำหนดมิกซ์อินเพียงครั้งเดียวแล้วใช้ซ้ำในคอมโพเนนต์ที่เกี่ยวข้องทั้งหมด

นี่คือตัวอย่างง่ายๆ:

// Defining a mixin
let myMixin = {
  created: function () {
    this.helloMixin()
  },
  methods: {
    helloMixin: function () {
      console.log('Hello from Mixin!')
    }
  }
}

// Using the mixin in a component
new Vue({
  mixins: [myMixin]
})

ในตัวอย่างนี้ เมื่อมีการสร้างอินสแตนซ์ Vue (หรือคอมโพเนนต์) ที่ใช้ myMixin มันจะบันทึก “Hello from Mixin!” ไปยังคอนโซลด้วย createdlifecycle hook ที่กำหนดไว้ในมิกซ์อิน

2. คำสั่งที่กำหนดเอง (Custom Directives): เขียน Vue.js Magic ของคุณเอง

Vue.js มาพร้อมกับคำสั่งในตัวมากมาย เช่น v-model, v-if, v-for, และอื่นๆ แต่อาจมีบางสถานการณ์ที่คุณต้องการฟังก์ชันบางอย่างที่ไม่ครอบคลุมโดยคำสั่งในตัว ในสถานการณ์เหล่านี้ Vue.js จะให้คุณกำหนดคำสั่งที่กำหนดเองได้

สมมติว่าคุณกำลังทำเว็บ Vue.js และทำแอพ และคุณต้องการคำสั่งแบบกำหนดเอง v-focus ที่เน้นองค์ประกอบอินพุตโดยอัตโนมัติเมื่อโหลดหน้าเว็บ คุณสามารถกำหนดได้ดังนี้:

Vue.directive('focus', {
  inserted: function (el) {
    el.focus()
  }
})

ตอนนี้คุณสามารถใช้คำสั่งนี้ในเทมเพลตของคุณได้ดังนี้:

<input v-focus>

3. ฟังก์ชัน Render และ JSX: การควบคุมเทมเพลตของคุณ

เทมเพลต Vue.js นั้นยอดเยี่ยมสำหรับการแสดงผลแบบประกาศ อย่างไรก็ตาม บางครั้งคุณต้องการความยืดหยุ่นมากขึ้นในมาร์กอัป และนั่นคือสิ่งที่ฟังก์ชันการเรนเดอร์และ JSX เข้ามามีบทบาท

ฟังก์ชัน Render เป็นเมธอดที่ส่งกลับองค์ประกอบ HTML พวกเขามีวิธีในการสร้างแม่แบบโดยทางโปรแกรม สิ่งนี้มีประโยชน์เมื่อโครงสร้างของคอมโพเนนต์ของคุณขึ้นอยู่กับตรรกะที่ซับซ้อนซึ่งยากที่จะแสดงในเทมเพลต

JSX ซึ่งเป็นส่วนขยายทางไวยากรณ์สำหรับ JavaScript สามารถทำให้ฟังก์ชันการเรนเดอร์ของคุณอ่านได้ง่ายขึ้นและเขียนได้ง่ายขึ้น หากต้องการใช้ JSX กับ Vue.js คุณต้องกำหนดค่าปลั๊กอิน Babel ในการตั้งค่าโปรเจ็กต์ของคุณ เมื่อคุณทำเสร็จแล้ว คุณสามารถเขียนส่วนประกอบ Vue.js ได้ดังนี้:

Vue.component('jsx-example', {
  render (h) {
    return <div id="foo">Hello JSX!</div>
  }
})

4. ปลั๊กอิน (Plugins): การเพิ่มความสามารถของ Vue.js

ปลั๊กอิน Vue.js เป็นโค้ดที่ใช้ซ้ำได้ซึ่งสามารถเพิ่มฟังก์ชันการทำงานระดับโลกให้กับ Vue เป็นเครื่องมือที่ยอดเยี่ยมสำหรับการเพิ่มคุณสมบัติที่ใช้ร่วมกันหรือรวมไลบรารีของบุคคลที่สาม

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

ตัวอย่างเช่น พิจารณาสถานการณ์ที่คุณกำลังทำเว็บ Vue.js และทำแอพ และต้องการใช้ไลบรารีของบุคคลที่สาม เช่น Axios ในหลายๆ คอมโพเนนต์สำหรับคำขอ HTTP แทนที่จะนำเข้า Axios ในแต่ละคอมโพเนนต์ คุณสามารถเขียนปลั๊กอิน Vue.js เพื่อตั้งค่า Axios และแนบไปกับต้นแบบ Vue

นี่คือตัวอย่างวิธีที่คุณสามารถทำได้:

import axios from 'axios';

const MyAxiosPlugin = {
  install(Vue) {
    Vue.prototype.$http = axios;
  },
};

Vue.use(MyAxiosPlugin);

ในตัวอย่างนี้MyAxiosPluginเป็นวัตถุ JavaScript ที่มีinstallเมธอด เมธอดนี้จะถูกเรียกเมื่อคุณVue.use()โทร ภายในinstallเมธอด เราแนบ axios เข้ากับต้นแบบ Vue ด้วยVue.prototype.$http = axios. ตอนนี้ axios พร้อมใช้งานในทุกอินสแตนซ์ของ Vue เป็นthis.$http.

ดังนั้น ในคอมโพเนนต์ Vue ใดๆ ของคุณ คุณสามารถสร้างคำขอ HTTP ในลักษณะนี้:

this.$http.get('/api/data').then(response => {
  console.log(response.data);
});

ปลั๊กอินให้วิธีการเพิ่มคุณสมบัติหรือวิธีการที่ใช้ร่วมกันทั่วโลก และคุณยังสามารถใช้เพื่อสรุปรหัสที่โต้ตอบกับไลบรารี JavaScript ภายนอกระบบนิเวศ Vue.js มันทำให้กระบวนการรวมราบรื่นขึ้นและทำให้ส่วนประกอบ Vue ของคุณสะอาดและมุ่งเน้นไปที่ตรรกะของมันเอง

Vue.js มีระบบนิเวศที่เฟื่องฟูพร้อมปลั๊กอินที่สนับสนุนโดยชุมชนมากมายที่คุณสามารถใช้ประโยชน์จากมันได้ ไม่ว่าคุณจะต้องการความสามารถในการกำหนดเส้นทางด้วยvue-router, การจัดการสถานะด้วยvuex, หรือจัดการวันที่ด้วยvue-moment, อาจมีปลั๊กอินที่ตรงกับความต้องการของคุณ ถ้าไม่คุณสามารถสร้างของคุณเองได้ตลอดเวลา!


ในกระบวนการทำเว็บ Vue.js และทำแอพ คุณมักจะพบว่าจำเป็นต้องมีคุณลักษณะขั้นสูงเพื่อรักษาโครงสร้าง การใช้ซ้ำ และประสิทธิภาพของโค้ดของคุณ Vue.js มีมิกซ์อินสำหรับการนำโค้ดกลับมาใช้ซ้ำในคอมโพเนนต์ คำสั่งที่กำหนดเองสำหรับการปรับปรุง HTML ฟังก์ชันการเรนเดอร์เพื่อการควบคุมเทมเพลตของคุณที่มากขึ้น และปลั๊กอินสำหรับการทำงานระดับโลก

การทำความเข้าใจและใช้ประโยชน์จากฟีเจอร์ขั้นสูงเหล่านี้ไม่เพียงแต่ช่วยให้คุณเขียนโค้ดได้สะอาดและมีประสิทธิภาพ แต่ยังให้ความยืดหยุ่นในการจัดการกับสถานการณ์ที่ซับซ้อนในแอปพลิเคชัน Vue.js ของคุณ พวกเขาทำหน้าที่เป็นหน่วยการสร้างที่แข็งแกร่งซึ่งช่วยให้นักพัฒนาก้าวไปไกลกว่าพื้นฐานการทำเว็บ Vue.js และทำแอพที่ซับซ้อน ไดนามิก และบำรุงรักษาได้

โปรดจำไว้ว่าศิลปะของการเรียนรู้แนวคิดขั้นสูงเหล่านี้ขึ้นอยู่กับการฝึกฝนและการสำรวจ ดังนั้น การทำเว็บ Vue.js และทำแอพต่อไป และอย่าลังเลที่จะทดลองใช้ฟีเจอร์อันทรงพลังเหล่านี้


Vue.js คืออะไร

Vue.js คือ ตอนที่ 5 : คอมโพเนนต์ (Components)