Image may be NSFW.
Clik here to view.
Clik here to view.

- ห้องพื้นฐานสำหรับผู้เริ่มต้น (น่าจะสำหรับคนที่เขียน ReactJS มาแล้ว)
- ห้องขั้น Advance
- Introduction to React
- Redux
- React Native
- Discussion เป็นการถามตอบกับ speaker ทุกคน
Introduction to React
เป็นการอธิบายการพัฒนา web application ตั้งแต่แบบเดิม มาจนถึง SPA (Single Page Application) แต่การพัฒนาระบบ web application ด้วย JavaScript แบบเดิม เช่น jQuery มักก่อให้เกิด code ซ้ำซ้อน และ กระจัดกระจาย ทำให้ reuse ไม่ดีเท่าที่ควร ดังนั้นจึงมี JavaScript framework ต่าง ๆ ออกมาให้ใช้งาน หนึ่งในนั้นคือ React ซึ่งพัฒนาโดยทีมของ Facebook อีกทั้งยังถูกใช้งานจากบริษัทชื่อดังมากมาย สามารถเข้าไปดูเพิ่มเติมได้ที่ Sites Using React React ออกแบบมาเพื่อทำให้ reuse code ง่ายขึ้น เนื่องจากออกแบบมาในรูปแบบ component-based มี performance การทำงานที่รวดเร็ว (Virtual DOM) รวมทั้งมี Ecosytem มากมาย จึงเป็นอีกทางเลือกหนึ่งในการพัฒนา web application ที่น่าสนใจอย่างมาก แต่ว่า React นั้นมี Learning curve ที่ค่อนข้างสูงเช่นกัน เนื่องจากต้องทำการศึกษาหลายอย่าง ไม่ว่าจะเป็น- NodeJS
- ES6, JSX (JavaScript syntax extension)
- Bable สำหรับการแปลง ES6 ไปเป็น JavaScript
- ESLint
- Webpack
- Dependency อื่น ๆ อีกมากมาย
Clik here to view.

- การสร้างและใช้งาน React component
- การใช้งานร่วมกับ bootstrap
- การจัดการ event และ state ต่าง ๆ ภายใน React app
- Reuse component
- React Router
- Redux
- Universal ReactJS หรือ Isomorphic ซึ่งมี session ในห้อง Advance
ว่าด้วยเรื่อง Redux
เมื่อระบบงานที่พัฒนาด้วย React มีขนาดใหญ่และซับซ้อนขึ้น ทำให้การจัดการ state ของระบบงานยากขึ้น ซึ่งปกติจะส่ง state หรือ ข้อมูลผ่าน Props ดังนั้นจึงมีคนคิดและสร้าง Redux ขึ้นมา เพื่อช่วยแก้ไขปัญหาของการจัดการ state ทำให้สามารถแยก state และ UI ออกจากกันได้อย่างชัดเจน ซึ่งมีรูปแบบที่เรียบง่าย ไม่ซับซ้อน ดังนี้- การทำงานเป็นแบบ Publish-Subscribe model
- ทำการเก็บ state ไว้ในสิ่งที่เรียกว่า Store
- ถ้าใครต้องการแก้ไข state ให้ทำการส่ง action ผ่าน method dispatch()
- ถ้าใครสนใจ state อะไรก็ห้ทำการ subscribe ไว้ใช้งานต่อไป
- Store สำหรับจัดเก็บ state ซึ่งประกอบไปด้วย
- State
- Reducer ทำหน้าที่คำนวณ state ต่อไป
- Dispatch(action) สำหรับส่ง action ต่าง ๆ ไปที่ store
- UI/View สำหรับการแสดงผล
Clik here to view.

- Single Source of Truth นั่นคือจะมี Store เพียวตัวเดียวเท่านั้น
- State is read-only นั่นคือไม่สามารถแก้ไข state ได้โดยตรง ต้องส่ง action ผ่าน method dispatch() เท่านั้น
- Mutation as Pure function นั่นคือ Reducer จะไม่ทำการแก้ไขข้อมูลใด ๆ เลย จะรับ input เป็น current state และ action จากนั้นจะส่ง next state กลับมาให้
React Native สำหรับการพัฒนา Mobile application
ทำให้สามารถพัฒนา mobile app ทั้ง Android และ iOSด้วย JavaScript เท่านั้น ซึ่งช่วยลดเวลาในการพัฒนา mobile app ลงไป มันก็มีทั้งข้อดีและข้อเสีย แต่ก็เป็นทางเลือกหนึ่งที่น่าสนใจเช่นกัน Image may be NSFW.Clik here to view.

Clik here to view.

- ผลการทำงานบน iOS และ Android จะไม่เหมือนกันทั้งหมด
- แนะนำให้จัดการ Layout ด้วย Flexbox
- มี DevTool ให้อยู่แล้ว สามารถกด CMD + D บน Emulator ได้เลย
- มี Hot reload ซึ่งจะทำการ reload ในส่วนที่เปลี่ยนแปลงเท่านั้น ทำให้การทดสอบและพัฒนาเร็วมาก ๆ
- ตัว framework มันเปลี่ยนแปลงเร็วมาก ๆ ตอนนี้ version 0.32 แล้ว และ 0.33 rc ออกมาให้ลองใช้แล้ว
- ผู้ใช้งานเอง ไม่ศึกษาและเรียนรู้ !!
- Component ต่าง ๆ ยังน้อยอยู่ นั่นสะท้อนให้เห็นขนาดของ community นั่นเอง
- โดยที่สามารถค้นหา component ต่าง ๆ ได้จาก JS-coach :: React native
Discussion ช่วงท้ายของงาน
Image may be NSFW.Clik here to view.

- เริ่มเขียนใหม่หมดเลย
- ค่อย ๆ ทำไปทีละส่วน
- ถ้าเป็นระบบเก่าแนะนำให้ทำการวางแผน migrate ดี ๆ ด้วย