เช้านี้อ่านบทความเรื่อง How Airbnb use React
สัมภาษณ์กับคุณ Leland Richardson ตั้งแต่ต้นปีที่แล้ว (นานเลยนะ)
ซึ่งเป็น Lead Engineer ที่ Airbnb และเป็น contributor หลักของ Enzyme
มาดูกันว่า
ทำไมถึงเลือก React มาใช้ ?
ใช้งาน React อย่างไรบ้าง ?
มีอุปสรรคและความท้าทายอะไรบ้าง ?
จึงทำการแปลและสรุปสิ่งที่น่าสนใจไว้นิดหน่อย
ถึงจะเก่าหน่อยแต่คิดว่าน่าจะมีประโยชน์
เรื่องแรกที่น่าสนใจคือ การเริ่มนำ React มาใช้ในการพัฒนาอย่างไร ?
จะหาคนมาทำอย่างไร ? มีการสอนและแบ่งปันกันอย่างไร ? ซึ่งเป็นเรื่องที่เป็นปัญหาอย่างมากสำหรับหลาย ๆ องค์กร !!โดยแบ่งเป็น 4 ส่วนคือ ส่วนที่ 1 สำหรับพนักงานใหม่ จะมีการจัด Bootcamp ระยะเวลา 3 สัปดาห์ เพื่อเตรียมความพร้อมทั้งเครื่องมือและ process ที่จำเป็นต่าง ๆ ส่วนที่ 2 มีการจัดการสอนภายในอยู่แล้ว ซึ่งใคร ๆ ก็สามารถเข้าร่วมได้ ส่วนที่ 3 น่าสนใจมาก ๆ คือ ใช้งาน Slack เป็นหลัก ซึ่งมีสิ่งต่าง ๆ ครบครัน เหมือนกับเป็น Internal Stack overflow นั่นเอง นั่นคือทุกคนพร้อมช่วยกันถามและตอบปัญหาต่าง ๆ รวมทั้งประวัติการพูดคุยต่าง ๆ สามารถค้นหาได้ง่ายอีกด้วย ซึ่งเป็นประโยชน์ต่อทีมมาก ๆ ส่วนที่ 4 ที่น่าสนใจเข้าไปอีกคือ วัฒนธรรมของการทำ Code Review ซึ่งบอกไว้ว่า เป็นวิธีการที่ดีมาก ๆ สำหรับการเรียนรู้สิ่งใหม่ ๆ ทำให้ความสามารถพัฒนาไปได้เร็วมาก
ดังนั้นเรื่องของ internal process/training มันจึงสำคัญมาก ๆ ถ้าหายากนัก ก็สร้างกันขึ้นมาเองเลย
เรื่องที่สอง ข้อได้เปรียบของ React ที่เห็นได้ชัดสุด ๆ คืออะไร ?
เนื่องจาก React ออกแบบในรูปแบบ component ดังนั้นเรื่องของ reusability และ portability จึงเด่นมาก อีกทั้งเอื้อต่อการ reactoring อีกด้วยเรื่องที่สาม มีข้อดีก็ต้องมีข้อเสียกันบ้างสำหรับการใช้งาน React ?
สำหรับผู้เริ่มต้นนั้นมักจะงงและสับสนเกี่ยวกับการจัดการ state ต่าง ๆ เพิ่มเติมทั้ง props ทั้ง state อ่านไปอ่านมาเจอ Flux, Redux และอื่น ๆ อีกมากมาย รวมทั้ง ecosystem ที่อาจจะทำให้มึนงงไปได้หลายวัน โดยที่ทีมจัดการ state ต่าง ๆ ของ React app ด้วย alt library มีคำถามว่า ใช้งาน Relay และ GraphQL หรือไม่ ? ตอบเลยว่ายังเรื่องที่สี่ เขียน JavaScript ตามมตรฐานใด ?
ใช้งาน ES6 ซึ่งมีรูปแบบหรือ coding style ตามนี้เรื่องที่ห้า ทดสอบ React App กันอย่างไร ?
เป็นสิ่งที่น่าสนใจมาก โดยแบ่งเป็นดังนี้- ใช้ Mocha สำหรับ Test Runner
- ใช้ Chai สำหรับการ assertion หรือตรวจสอบผลการทำงาน
- ใช้ Enzyme สำหรับการทดสอบ React library
เรื่องที่หก จัดการ style ต่าง ๆ กันอย่างไร ?
สั้น ๆ คือ ใช้ SCSS (Sassy CSS)เรื่องที่เจ็ด ทำการจัดการเรื่องของ rounting ของ React App กันอย่างไร ?
มีหลาย ๆ ส่วนใช้งาน react-router แต่ส่วนใหญ่จะไม่จัดการด้วย JavaScript นะมาถึงตรงนี้น่าจะพอทำให้เห็นการนำ React มาใช้ในการพัฒนาระบบบ้างนะครับ ขอให้สนุกกับการ coding ครับ