Contents

การย้ายไปยัง Vue 3 Composition API เพื่อการพัฒนาส่วนประกอบที่ดีขึ้น

เนื่องจากผู้สร้าง Vue ได้ประกาศว่า Vue 2 จะสิ้นสุดอายุการใช้งานภายในวันที่ 31 ธันวาคม 2023 นักพัฒนาจึงได้รับการสนับสนุนให้เปลี่ยนไปใช้ Vue 3

การเปิดตัววิวัฒนาการนี้ทำให้เกิด Composite Application Platform Interface ซึ่งนำเสนอวิธีการที่มีประสิทธิภาพ ชัดเจน และปลอดภัยยิ่งขึ้นสำหรับการสร้างโปรเจ็กต์ Vue ผ่านหลักการออกแบบแบบโมดูลาร์และการประกาศ

API องค์ประกอบคืออะไร

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

แรงจูงใจสำหรับ Composition API

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

การใช้งานออบเจ็กต์ Options แบบเดิมๆ มักนำไปสู่แอตทริบิวต์ส่วนประกอบมากมาย ทำให้โค้ดเข้าใจและจัดการได้ยากเนื่องจากความซับซ้อน

นอกจากนี้ การใช้ตรรกะที่ใช้ร่วมกันระหว่างส่วนประกอบที่แตกต่างกันยังพิสูจน์แล้วว่ายุ่งยาก นอกจากนี้ ตรรกะที่เผยแพร่กระจายไปตามวงจรชีวิตต่างๆ และวิธีการต่างๆ ยังได้เพิ่มความเข้าใจในการดำเนินการที่ครอบคลุมของแต่ละองค์ประกอบอีกด้วย

ประโยชน์ของ Composition API

การใช้ Composition API นำเสนอประโยชน์มากมายเมื่อเปรียบเทียบกับ Options API ซึ่งช่วยปรับปรุงฟังก์ชันการทำงานโดยรวมและประสบการณ์ผู้ใช้

ปรับปรุงประสิทธิภาพ

Vue 3 ได้นำเสนอแนวทางการเรนเดอร์ที่เป็นนวัตกรรมที่เรียกว่า Proxy-based Reactivity System ซึ่งได้รับการออกแบบมาเพื่อปรับปรุงทั้งประสิทธิภาพและความสามารถในการโต้ตอบ ด้วยการลดการใช้หน่วยความจำและเพิ่มประสิทธิภาพปฏิกิริยา ระบบใหม่นี้ช่วยให้การจัดการลำดับชั้นส่วนประกอบที่ครอบคลุมมีประสิทธิภาพมากขึ้น

ขนาดมัดเล็กลง

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

ปรับปรุงองค์กรรหัส

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

การนำส่วนประกอบและฟังก์ชันกลับมาใช้ซ้ำได้

การใช้ฟังก์ชันการจัดองค์ประกอบช่วยให้สามารถบูรณาการและนำโค้ดกลับมาใช้ใหม่ภายในส่วนประกอบต่างๆ ได้อย่างราบรื่น ส่งผลให้มีไลบรารีฟังก์ชันที่ใช้ร่วมกันที่มีประสิทธิภาพ

รองรับ TypeScript ที่ดีกว่า

การเปิดตัว Composition API ได้ปรับปรุงระดับการสนับสนุน TypeScript ภายใน Visual Studio Code อย่างมีนัยสำคัญ ส่งผลให้มีระดับความแม่นยำที่สูงขึ้นเกี่ยวกับการอนุมานประเภท ตลอดจนความสามารถที่เพิ่มขึ้นในการตรวจจับและแก้ไขความคลาดเคลื่อนในการพิมพ์ในระหว่างกระบวนการพัฒนา

การเปรียบเทียบระหว่างออบเจ็กต์ตัวเลือกและ API องค์ประกอบ

ด้วยความคุ้นเคยกับพื้นฐานทางทฤษฎีของ Composition API ของ React คุณก็พร้อมที่จะนำความรู้นี้ไปใช้ในบริบทเชิงปฏิบัติแล้ว การเปรียบเทียบระหว่างคุณประโยชน์ที่นำเสนอโดย Composition API กับประโยชน์ที่ได้รับจากส่วนประกอบของคลาส จะช่วยให้ความกระจ่างถึงคุณค่าที่นำเสนอ

ข้อมูลปฏิกิริยาใน Vue 3

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

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

การใช้ตัวเลือก data ภายในส่วนประกอบ Vue ช่วยให้สามารถใช้งานเมธอด getter และ setter ที่สอดคล้องกับ ES6 โดยอัตโนมัติรอบๆ แต่ละคุณสมบัติที่มีอยู่ภายในอ็อบเจ็กต์ data

getter และ setters ที่กล่าวมาข้างต้นจะตรวจสอบการพึ่งพาซึ่งกันและกันระหว่างคุณลักษณะต่างๆ และปรับอินเทอร์เฟซผู้ใช้แบบไดนามิกเพื่อตอบสนองต่อการแก้ไขที่ทำกับคุณลักษณะเหล่านี้

ในลักษณะที่ละเอียดยิ่งขึ้น ต่อไปนี้เป็นภาพประกอบที่สาธิตการสร้างข้อมูลที่ตอบสนองใน Vue 2 โดยใช้อ็อบเจ็กต์ Options:

 <template>
  <div>
    <p>Count: {{ count }}</p>
    <button @click="increment">Increment</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      count: 0,
    };
  },

  methods: {
    increment() {
      this.count\+\+;
    },
  },
};
</script>

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

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

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

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

Vue มีฟังก์ชันสองประเภทสำหรับกำหนดข้อมูลเชิงโต้ตอบ-ฟังก์ชัน ref และฟังก์ชัน reactive แบบแรกสร้างการอ้างอิงเชิงปฏิกิริยาเดี่ยวไปยังค่าเฉพาะ ในขณะที่แบบหลังสร้างโครงสร้างเชิงปฏิกิริยาทั้งหมดซึ่งประกอบด้วยคุณสมบัติมากมาย

ในกรณีนี้ เราจะอธิบายกระบวนการสร้างข้อมูลที่ตอบสนองโดยใช้ฟังก์ชัน ref ภายในบริบทของ Vue 3:

 <script setup>
import { ref } from 'vue';

const count = ref(0);

function increment() {
  count.value\+\+;
}
</script>

<template>
  <div>
    <p>Count: {{ count }}</p>
    <button @click="increment">Increment</button>
  </div>
</template>

ในการใช้ฟังก์ชัน ref() ภายในบริบทของ Vue 3 จะต้องนำเข้าฟังก์ชันดังกล่าวจากแพ็คเกจ Vue ก่อน ฟังก์ชันนี้ทำหน้าที่เป็นวิธีการสร้างการอ้างอิงเชิงโต้ตอบไปยังตัวแปรต่างๆ

โค้ด JavaScript ที่ให้มาใช้ฟังก์ชัน ref() เพื่อสร้างการอ้างอิงไปยังตัวแปร count โดยตั้งค่าเริ่มต้นเป็น"0"ต่อจากนั้น จะกำหนดออบเจ็กต์ที่ส่งคืนจากฟังก์ชัน ref() ให้กับตัวแปร count อ็อบเจ็กต์ดังกล่าวมีคุณสมบัติเดียวชื่อ value ซึ่งทำหน้าที่เป็นที่เก็บข้อมูลที่ไม่แน่นอนสำหรับสถานะปัจจุบันของตัวแปร count

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

ใน Vue 3 ไวยากรณ์เมธอดสำหรับการกำหนดฟังก์ชันในส่วนประกอบได้ถูกแทนที่ด้วยการใช้ฟังก์ชัน JavaScript มาตรฐาน ฟังก์ชันเหล่านี้ถูกกำหนดไว้ภายในบล็อก การตั้งค่า ของสคริปต์ของส่วนประกอบ

ตอนนี้เราสามารถใช้คุณสมบัติปฏิกิริยาที่สร้างขึ้นผ่านการประยุกต์ใช้ฟังก์ชัน ref() โดยการเชื่อมโยงวิธีการส่งกลับค่ากับตัวระบุที่กำหนด ตามภาพประกอบ ตัวอย่างโค้ดที่ให้มาใช้ไวยากรณ์"count.value"เพื่อกล่าวถึงสถานะปัจจุบันของคุณสมบัติปฏิกิริยา"count"

ฟังก์ชันการคำนวณใน Vue 3

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

ใน Vue 2 เราจะกำหนดพฤติกรรมการคำนวณของส่วนประกอบโดยใช้ตัวเลือก"คำนวณ"ที่อยู่ภายในส่วนประกอบดังกล่าว มีภาพประกอบตัวอย่างด้านล่าง:

 <template>
  <div>
    <p>Count: {{ count }}</p>
    <p>Double Count: {{ doubleCount }}</p>
    <button @click="incrementCount">Increment Count</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      count: 0
    };
  },
  computed: {
    doubleCount() {
      return this.count * 2;
    }
  },
  methods: {
    incrementCount() {
      this.count\+\+;
    }
  }
};
</script>

ในภาพประกอบข้างต้น คุณสมบัติที่คำนวณ doubleCount ขึ้นอยู่กับคุณสมบัติข้อมูล count หากคุณสมบัติ count ได้รับการเปลี่ยนแปลงใดๆ Vue จะประเมินคุณสมบัติ doubleCount อีกครั้งตามนั้น

ใน Vue 3 การแนะนำ Composition API นำเสนอแนวทางใหม่ในการกำหนดคุณสมบัติที่คำนวณผ่านการใช้ประโยชน์จากฟังก์ชัน คำนวณ ไวยากรณ์สำหรับการใช้งานนี้เป็นดังนี้:

 <script setup>
import { ref, computed } from 'vue';

const count = ref(0);
const doubleCount = computed(() => count.value * 2);

const incrementCount = () => {
  count.value\+\+;
};
</script>

<template>
  <div>
    <p>Count: {{ count }}</p>
    <p>Double Count: {{ doubleCount }}</p>
    <button @click="incrementCount">Increment Count</button>
  </div>
</template>

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

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

การใช้งานที่ให้มาจะกำหนดฟังก์ชันการคำนวณที่ยอมรับฟังก์ชัน getter เป็นอินพุต โดยฟังก์ชันหลังมีหน้าที่รับผิดชอบในการรับค่าจากข้อมูลเชิงโต้ตอบ โดยเฉพาะอย่างยิ่ง ในกรณีนี้ การสะท้อนที่คำนวณแล้ว doubleCount จะส่งคืนผลคูณของตัวแปรเชิงรับ จำนวน คูณด้วยสอง

เป็นที่น่าสังเกตว่าบล็อกโค้ดที่สร้างขึ้นโดยใช้ Composition API มีแนวโน้มที่จะอ่านได้ชัดเจนและกระชับมากกว่าเมื่อเปรียบเทียบกับบล็อกโค้ดที่สร้างขึ้นโดยใช้ออบเจ็กต์ Options

เรียนรู้การสร้างคำสั่งที่กำหนดเองใน Vue

Composition API ของ Vue 3 นำเสนอวิธีการที่มีประสิทธิภาพและหลากหลายสำหรับการจัดโครงสร้างและการวางโค้ดใหม่ภายในเทมเพลตส่วนประกอบ ช่วยให้นักพัฒนาสามารถสร้างแอปพลิเคชัน Vue ที่มีความคล่องตัวและจัดการได้มากขึ้น ผ่านโมดูลาร์และความสามารถในการบำรุงรักษาที่เพิ่มขึ้น

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