Wikipedia ถือกำเนิดมาตั้งแต่ปี 2001 โดยใช้ซอฟต์แวร์ MediaWiki ที่เขียนขึ้นในยุคนั้น ซึ่งปัจจุบันก็มีหลายส่วนที่เริ่มล้าสมัยแล้ว
มูลนิธิ Wikimedia Foundation ในฐานะผู้ดูแลโครงการ Wikipedia จึงพยายาม "ยกเครื่อง" ซอฟต์แวร์ MediaWiki ให้ทันสมัยขึ้น หนึ่งในแผนการคือเปลี่ยนมาใช้เฟรมเวิร์คจาวาสคริปต์ตัวใหม่ๆ แทน jQuery ที่ใช้มานาน และ เฟรมเวิร์คของตัวเองที่ชื่อ OOUI
คณะทำงานมีเกณฑ์การคัดเลือกเฟรมเวิร์คหลายข้อ เช่น ต้องนิยาม UI แบบ declarative, ตัว UI ต้องอัพเดตแบบ reactive (ตามการป้อนข้อมูลของผู้ใช้), เป็นโครงการโอเพนซอร์สที่มีชุมชนเหนียวแน่น, ประสิทธิภาพสูง, ยืดหยุ่นต่อการใช้งานหลายสถานการณ์
เฟรมเวิร์คที่นำมาพิจารณา มีตั้งแต่ Angular, Ember (สอบตกเรื่องความยืดหยุ่นที่นำมาใช้ในช่วงเปลี่ยนผ่าน) Svelte, Inferno, Preact (ชุมชนผู้ใช้มีขนาดเล็กเกินไป) Stimulus.js (ตกเรื่องการเรนเดอร์ฝั่งเซิร์ฟเวอร์) สุดท้ายเหลือตัวเลือก 2 รายที่เข้ารอบสุดท้ายคือ Vue.js และ React
สุดท้ายคณะทำงานเลือก Vue.js ด้วยเหตุผล 4 ข้อ
- ใช้งานโดยไม่ต้องมี front-end build tools ได้ดีกว่า React
- เรียกใช้ไลบรารีภายนอกน้อย มี dependency น้อย
- ไลบรารี Vue ค่อนข้างเสถียร ไม่มีปัญหาความเข้ากันได้ระหว่างเวอร์ชันใหญ่ๆ
- โครงการพัฒนา Vue ไม่อิงกับบริษัทใดบริษัทหนึ่งเกินไป (React อิงกับ Facebook)
ขั้นถัดไป ทีมงานของ Wikimedia จะค่อยๆ นำ Vue.js มาใช้ในโครงการนำร่องขนาดเล็กๆ ก่อน เพื่อทดสอบว่าใช้งานได้ดีจริงแค่ไหนในสถานการณ์จริงๆ
ที่มา - Wikimedia , The Register , ภาพจาก @Vuejs
Comments
ถ้าลองใช้จริงเหตุผลอาจจะเหลือข้อ 4 ข้อเดียว
บอกได้คำเดียวว่าผมโคตรเกลียดการเอา logic ไปใส่ใน template (Angular, Vue)มันเหมือนต้องคิด logic เพิ่มอีกเสียเวลา งานเพิ่ม debug ยาก
ลองยกตัวอย่างหน่อยครับ มันเป็นประมาณไหนจะได้ไม่ทำครับ
มันอาจจะทำได้ก็จริง แต่ก็ไม่จำเป็นต้องทำนะproperty get ก็มี หรือจะ binding ผ่านตัวแปร public ก็ได้นี่ครับ
ใส่ได้ != ควรใส่นะครับ ถ้าของ Angular มี style guide เขียนไว้ชัดเจนว่าไม่ควรใช้เ template เขียน logic ครับ
แนะนำให้ไปอ่านต้นทางนะครับ ความรู้เน้นๆ
Simulus.js แก้เป็น Stimulus.js ครับ
https://stimulusjs.org/
@wittawasw
Vue2 Vue3 เปลี่ยนนิดเดียว
SPICYDOG's Blog
ด้วยสิ่งที่ Wiki พิจารณา ทำไม Angular ถึงไม่เข้ารอบสุดท้ายครับ เพราะผมดูแล้วมันก็พอ ๆ กัน
ในวงเล็บคือทั้งคู่เลยครับ
ใช้ตอน version คาบเกี่ยวจะดีเหรอเนี่ย