OOZOU
ติดต่อเรา
กลับไปหน้า TIL
javascript

สถาปัตยกรรม Flux แบบง่ายด้วย Vue.js

13 ตุลาคม 2563

สำหรับแอปเล็ก ๆ ที่ต้องการแค่ pattern จัดการ state แบบง่าย ๆ ผู้เขียนมักใช้ component เดียวเก็บ state ของแอปไว้ เรียกว่า container ซึ่งทำหน้าที่เป็น single source of truth ให้แอปใช้อ้างอิง state ของตัวเอง Vue มีกลไกสำหรับสร้าง global event listener ที่ระดับ root เรียกว่า EventBus ซึ่งเป็นวิธีสุดง่ายในการเลียนแบบสถาปัตยกรรม flux

ทั้งหมดที่คุณต้องมีคือ module เดียวที่ export Vue เป็น EventBus แบบนี้

// EventBus.js
import Vue from 'vue'
export const EventBus = new Vue()

จากนั้นคุณสามารถใช้มันภายใน container ของคุณเพื่อ listen event จาก component ไหนก็ได้ในแอป โดยปกติผู้เขียนจะเพิ่ม listener ไว้ใน life cycle created

EventBus.$on('event-name', callback)

จากนั้นคุณสามารถ import EventBus เข้าไปใน component ไหนก็ได้ของคุณ แล้ว trigger my-custom-event จากที่ไหนก็ได้ โดยไม่ต้อง emit event ขึ้นไปหา parent ของ component นั้น แล้วทำซ้ำกระบวนการเดิมในทุก component ที่อยู่ระหว่าง component ที่ trigger การเปลี่ยนแปลงกับ container ปลายทาง

// Goes directly to the global listener and triggers callback
EventBus.$emit('event-name')

แค่นั้นเลย ถ้ามันเริ่มซับซ้อนเกินไป ลองพิจารณาใช้ Vuex

เพิ่มเติมเกี่ยวกับ javascript

javascript13 ตุลาคม 2563

Destructuring assignment ใน JS

แบบง่าย ๆ javascript const [a, b, ...c] = [10, 20, 100,200] // a= 10, b=20, c=[100,200] const { first, second } = { first: 1, second: 2 } // first = 1, second = 2

javascript13 ตุลาคม 2563

วิธีสร้าง HTML Element พร้อม Attribute ในบรรทัดเดียวด้วย JavaScript

เวลาทำโปรเจกต์ JavaScript การสร้าง HTML element แบบ dynamic เป็นเรื่องปกติ ตามวิธีดั้งเดิม คุณอาจต้องใช้โค้ดหลายบรรทัดเพื่อสร้าง element แล้วตั้งค่า attribute ทีละตัว…

มีโปรเจกต์ในใจ?

เรายินดีรับฟังสิ่งที่คุณกำลังสร้าง

เริ่มต้นสนทนาhello@oozou.com
OOZOU Logo

กรุงเทพฯ · สิงคโปร์ · ฮ่องกง

X
Facebook
Instagram
LinkedIn

บริการ

  • พัฒนาเว็บ
  • เอเจนต์ AI และ Generative AI
  • พัฒนาแอปมือถือ
  • วิศวกรรมและวิเคราะห์ข้อมูล
  • UI/UX และการออกแบบผลิตภัณฑ์
  • การเปลี่ยนผ่านสู่ดิจิทัล

บริษัท

  • เกี่ยวกับเรา
  • ร่วมงานกับเรา
  • บล็อก
  • กรณีศึกษา
  • Today I Learned
  • ติดต่อเรา

เพิ่มเติม

  • อุตสาหกรรม
  • เครือข่ายพันธมิตร
© 2026 OOZOU สงวนลิขสิทธิ์
นโยบายความเป็นส่วนตัวจรรยาบรรณนโยบาย ABAC