ผู้สร้าง Vue.js Evan คุณชั่งน้ำหนักบน WordPress JavaScript Framework Discussion
เผยแพร่แล้ว: 2017-06-06
สัปดาห์ที่ผ่านมา ผู้ร่วมให้ข้อมูลหลักของ WordPress ได้จำกัดการพิจารณาของพวกเขาสำหรับเฟรมเวิร์ก JavaScript ใหม่ให้กับ React และ Vue เนื่องจากทีมหลักมีความรู้เกี่ยวกับการทำงานกับ React มากขึ้น พวกเขาจึงเข้าถึงนักพัฒนาที่มีประสบการณ์ที่แตกต่างกันในการใช้เฟรมเวิร์กอื่นๆ ในบริบทของ WordPress
หนึ่งในข้อกังวลหลักที่ผู้ร่วมให้ข้อมูลมีเกี่ยวกับ Vue คือความยืนยาวของโครงการ ฉันถามผู้สร้าง Vue Evan You ว่าเขาสามารถชั่งน้ำหนักในหัวข้อนี้เพื่อให้ผู้ร่วมให้ข้อมูลของ WordPress มีความเข้าใจที่ดีขึ้นเกี่ยวกับโครงการนี้หรือไม่ โดยเฉพาะอย่างยิ่งเกี่ยวกับความพยายามของเขาในการปลูกฝังผู้ดูแลเพิ่มเติมเพื่อช่วยแบ่งเบาภาระการดูแล
"ฉันคิดว่าสิ่งสำคัญคือต้องดูประวัติการทำงาน - Vue มีมาเกือบ 4 ปีแล้ว และงานทั้งหมดทำในที่สาธารณะบน GitHub เพื่อให้ทุกคนสามารถตรวจสอบประวัติการบำรุงรักษาได้" คุณกล่าว “ในขณะที่ฉันได้รับการพัฒนาเป็นส่วนใหญ่ แต่การซ่อมบำรุงในปัจจุบันนั้นขับเคลื่อนโดยชุมชนมากกว่ามาก เรามีสมาชิกในทีมหลักที่กระตือรือร้นในการพิจารณาปัญหาส่วนใหญ่ และปัญหาที่แก้ไขโดย PR ของชุมชนในเปอร์เซ็นต์ที่ใหญ่ขึ้นและมากขึ้น ใช่ ฉันได้พัฒนาผู้ดูแลเพิ่มเติมแล้วและจะทำต่อไป”
ขณะนี้คุณได้รับ $10,000/เดือน จากการบริจาค Patreon แบบประจำซึ่งให้ทุนสนับสนุนการทำงานเต็มเวลาของเขากับ Vue ก่อนหน้านี้เขาทำงานที่ Google และ Meteor ด้วย ระหว่างที่เขาทำงานที่ Google บางโครงการที่คุณทำงานอยู่นั้นใช้ Angular ซึ่งเขาบอกว่าเขาพบว่าหนักเกินไปสำหรับกรณีการใช้งานของเขาในขณะนั้น เขาสร้าง Vue.js เพื่อให้ใช้งานแนวคิดที่เขาชอบเกี่ยวกับ Angular ได้ง่ายขึ้น
คุณยังกล่าวเมื่อเร็วๆ นี้ว่าเขาได้เรียนรู้อะไรเล็กน้อยจากชุมชน React ซึ่งมีอิทธิพลต่อการตัดสินใจด้านเทคนิคของเขาใน Vue 2
ฉันได้เรียนรู้มากมายจากชุมชน React ทั้งโค้ดและผู้คน ฉันหวังว่าทุกคนจะเป็นเหมือน @dan_abramov ความสงบ.
– Evan You (@youyuxi) วันที่ 29 พฤษภาคม 2017
"อย่างแรก Vue 2 ใช้โมเดลการเรนเดอร์ Virtual DOM แบบเดียวกันด้านล่าง ซึ่งถูกบุกเบิกโดย React เป็นครั้งแรก" คุณกล่าว “การแนะนำ Virtual DOM ทำให้ Vue สามารถแสดงพลังขององค์ประกอบ vdom ในขณะที่ยังคงความสามารถเข้าถึงได้ง่าย
“ชุมชน React ยังใช้งานได้ดีเมื่อมีการสำรวจโดเมนปัญหาใหม่ เช่น การจัดการสถานะและการจัดการ CSS มีโซลูชันที่แข่งขันกันมากมายและมีแรงบันดาลใจมากมายเมื่อฉันใช้โซลูชันอย่างเป็นทางการสำหรับ Vue”
Evan คุณกล่าวถึงความเข้าใจผิดของ WordPress Core Contributors เกี่ยวกับ Vue.js
คุณบอกว่าเขาติดตามการสนทนาของผู้มีส่วนร่วมของ WordPress เกี่ยวกับ React vs Vue แต่จะไม่เสนอความคิดเห็นซึ่งเป็นทางเลือกที่ดีกว่าสำหรับโครงการ
“คำตอบของฉันจะลำเอียงอย่างเห็นได้ชัด และโดยสัตย์จริงแล้ว ฉันไม่ได้อยู่ในทีมหลักของ WP ดังนั้นฉันจึงไม่มีมุมมองเพียงพอที่จะตัดสินใจ” คุณกล่าว “อย่างไรก็ตาม ฉันสามารถให้ข้อเสนอแนะเกี่ยวกับปัญหาบางประเด็นที่กำลังพูดคุยกันอยู่โดยหวังว่าจะช่วยให้พวกเขาตัดสินใจได้ดีขึ้น”
คุณแสดงความคิดเห็นในบันทึกการประชุม Javascript ล่าสุดพร้อมคำอธิบายเกี่ยวกับความเข้าใจผิดบางประการเกี่ยวกับ Vue.js คุณได้กล่าวถึงประเด็นเกี่ยวกับ "การยอมรับภาษา JavaScript" เนื่องจากผู้ร่วมให้ข้อมูลบางคนคิดว่าภาษาเทมเพลตของ Vue บดบัง JavaScript ที่อยู่เบื้องหลัง
“ฉันคิดว่า 'การยอมรับ JavaScript ในภาษา' เป็นอีกรูปแบบหนึ่งของ React ที่เราไม่เห็นใน Vue” Andrew Duthie กล่าวระหว่างการประชุมครั้งล่าสุด

คำตอบของคุณเปรียบเทียบการใช้เทมเพลตของ Vue เป็น "syntax sugar สำหรับการแสดงมุมมองที่ด้านบนของ HTML" กับสิ่งที่เขาเชื่อว่าเป็นการใช้งานที่คล้ายกันในกรณีของ JSX เป็นการแสดงมุมมองที่ด้านบนของ JavaScript:
ความสมบูรณ์ที่เพิ่มขึ้นของ UI ไม่จำเป็นต้องใส่ทุกอย่างใน JavaScript ในทางกลับกัน เพียงเพราะ Vue ใช้เทมเพลตเป็นค่าเริ่มต้น ไม่ได้หมายความว่าจะช่วยให้ผู้คนเข้าถึงได้โดยไม่ต้องเรียนรู้ JavaScript อย่างถูกต้อง
เทมเพลตของ Vue ได้รับการคอมไพล์เป็นฟังก์ชันการแสดงผล JavaScript ภายใต้ประทุน และจริง ๆ แล้วมีความใกล้ชิดกับ JavaScript มากกว่าการสร้างเทมเพลตสตริงแบบเดิม เป็นเพียงชั้นของน้ำตาลไวยากรณ์ที่ด้านบนของการแสดง Virtual DOM คิดว่า JSX เป็นน้ำตาลไวยากรณ์สำหรับการแสดงมุมมองที่ด้านบนของ JS; เทมเพลต Vue เป็นน้ำตาลไวยากรณ์สำหรับการแสดงมุมมองที่ด้านบนของ HTML
JSX/Raw JS ให้ความยืดหยุ่นมากขึ้นเมื่อคุณต้องใช้การจัดการกับโหนด Virtual DOM โดยตรง นี่คือเหตุผลที่ Vue รองรับฟังก์ชันการเรนเดอร์ด้วย แต่สิ่งนี้ไม่ได้ทำให้กระบวนทัศน์ที่ตรงกันข้ามสองกระบวนทัศน์อยู่ภายใต้เต็นท์เดียวกัน – มันเพียงทำให้ผู้ใช้สามารถข้ามชั้นน้ำตาลไวยากรณ์เพื่อการควบคุมที่มากขึ้น
คุณกล่าวว่าแนวคิดเบื้องหลังการสร้างเทมเพลตที่ด้านบนของฟังก์ชันการแสดงผลคือการให้ "ความสามารถในการเข้าถึงที่ดีขึ้น" ซึ่งเป็นข้อกังวลที่ผู้เสนออื่น ๆ ของ WordPress นำ Vue มาใช้
"ผู้ใช้ที่คุ้นเคยกับ HTML และมีกรณีการใช้งานที่เรียบง่ายกว่าสามารถใช้เทมเพลตได้ ในขณะที่ผู้ใช้ที่คุ้นเคยกับฟังก์ชัน JSX/render อยู่แล้วสามารถใช้ประโยชน์จากพลังของ JS ได้อย่างเต็มที่" คุณกล่าว “สิ่งนี้จะเหมาะกับการใช้ WP core เป็นอย่างดี: ผู้ใช้ชุมชนที่ใส่ใจเกี่ยวกับความสามารถในการเข้าถึงมีเวลาที่ง่ายกว่าในการเริ่มต้น ในขณะที่ทีมหลักสามารถเข้าถึงฟังก์ชัน JSX/render สำหรับกรณีการใช้งานขั้นสูง”
คุณยังกล่าวถึงข้อกังวลเรื่องอายุขัยโดยให้ข้อมูลเพิ่มเติมเกี่ยวกับกระบวนการพัฒนาของ Vue เขายืนยันว่า codebase ปัจจุบันส่วนใหญ่พัฒนาโดยเขาเพียงคนเดียว แต่การบำรุงรักษาจะกระจายไปทั่วทีมหลักที่มีสมาชิกทั่วโลก
“ผู้มีส่วนร่วมรายอื่นมีจำนวนการคอมมิตที่ต่ำกว่า เนื่องจากผลงานของพวกเขาทั้งหมดถูกส่งในรูปแบบของ PR และเราใช้คุณลักษณะ 'สควอชและคอมมิต' บน GitHub ดังนั้นการประชาสัมพันธ์แต่ละรายการจึงส่งผลให้มีคอมมิตเพียงครั้งเดียวสำหรับผู้ร่วมให้ข้อมูล” คุณกล่าว “เราได้รวม PRs เกือบ 500 รายการใน repo หลักเพียงอย่างเดียว และอื่นๆ อีกมากมายทั่วทั้งองค์กร repos อื่น ๆ ภายใต้องค์กร vuejs เช่น vuex, vue-router, vuejs.org ส่วนใหญ่ได้รับการดูแลโดยสมาชิกในทีมที่ทุ่มเท”
คุณยังให้คำชี้แจงเกี่ยวกับคำถามเกี่ยวกับความเสถียรและความเข้ากันได้ในอนาคต เนื่องจากผู้มีส่วนร่วมของ WordPress ได้แสดงความกังวลเกี่ยวกับการเปลี่ยนแปลงที่ไม่สมบูรณ์ในภาษาเทมเพลตใน Vue 2.0
"สิ่งนี้ขอความกระจ่าง: เวอร์ชัน Vue ปฏิบัติตาม semver อย่างเคร่งครัด" คุณกล่าว “ครั้งเดียวที่มีการทำลายการเปลี่ยนแปลง API ที่โพสต์ 1.0 คือการชน 2.0 ไวยากรณ์ของเทมเพลตเป็นส่วนหนึ่งของ API ดังนั้นจึงไม่ [หยุดทำงาน] และในระหว่างที่เวอร์ชันหลักมีการกระแทก เรายอมรับความเข้ากันได้แบบย้อนหลังของ API 100% เราให้ความสำคัญกับความเสถียรเป็นอย่างมาก ชุมชนและผู้ใช้ในการผลิตของเราก็เช่นกัน รวมถึง GitLab, Vice และบริษัทอินเทอร์เน็ตที่ใหญ่ที่สุดบางแห่งในประเทศจีน”
เนื่องจากมีผู้ให้การสนับสนุนหลักของ WordPress จำนวนมากได้พัฒนาบน React มานานหลายปี ข้อมูลที่คุณให้มานั้นให้รายละเอียดเพิ่มเติมและรายละเอียดเพิ่มเติมเกี่ยวกับ Vue ที่ผู้มีส่วนร่วมได้ถามถึงในระหว่างการตอบรับรอบต่างๆ การอภิปรายจะดำเนินต่อไปในอีกไม่กี่สัปดาห์ข้างหน้า และผู้มีส่วนร่วมวางแผนที่จะรวมหัวข้อนี้ไว้ในการประชุมสุดยอดผู้ร่วมให้ข้อมูลของ WordCamp Europe
