13 เหตุผลที่ผมเลือก Angular
เมื่อ Android/Kotlin dev ต้องเขียน frontend
สวัสดีครับผู้อ่านทุกท่าน วันนี้ผมมาแปลก ปกติจะเขียน Android/Kotlin แต่ช่วงนี้มีโอกาสได้จับเว็บ ก็อยากจะมาแชร์มุมมองระดับ newbie ฝั่งเว็บบ้าง
บทความนี้ไม่ได้เจาะลึกใดๆทั้งสิ้น ทุกสิ่งในนี้มาจากประสบการณ์อันผิวเผินที่ผมลองทำ React Vue Angular และการตัดช้อยส์จนเหลือ Angular เป็นคำตอบสุดท้าย
React
1. React ใช้ higher order function กันเป็นว่าเล่น
ผมใช้ชีวิตอยู่ในโลก OOP จนเคยตัว จะคุ้นเคยกับ FP บ้างก็คงเป็นพวก stream ทีนี้มาเจอ React ที่ใช้ higher order function มาห่อ component ได้เป็น component ใหม่ จะหยิบ lib อะไรมาใช้ ส่วนใหญ่ก็ท่านี้
ทุกครั้งที่ผมได้ยินคำว่า higher order component เทวดา OOP จะบินมากระซิบว่า
component พ่องเป็น function
สำหรับผมแล้ว component ที่เห็นๆอยู่ต่อหน้าต่อตานี่มันเป็น object ชัดๆ จะกลายเป็น function ไปได้อย่างไร ขัดกับสัญชาติญาณสุดๆ
2. React เป็นแค่ library
ชาว frontend ที่ช่ำชองอาจจะชอบอิสระเสรี แต่สำหรับนู้บอย่างผมแล้ว การที่ต้องเลือกหยิบ lib อื่นๆเข้ามาใช้มันเป็นภาระ ไม่รู้จะเลือกอันไหน แล้วก็ยังต้องศึกษาเพิ่มอีก เหนื่อย
3. config เหนื่อย
นู้บอย่างผม config webpack ไม่เป็น แล้วมันก็เต็มไปด้วย barbel polyfills อะไรอย่างอื่นอีกก็ไม่รู้ ไหนยังจะมี ESLint ที่ต้องเซตอีก รู้สึกวุ่นวาย ทำไรไม่ถูก
Vue
4. ง่าย
vue-cli นี่ใช้ง่ายดี พิมพ์ๆ เลือกๆ ได้โปรเจคออกมาแล้ว ไม่ต้อง config เอง
นอกจากนั้น ตัว vue เองก็เข้าใจง่ายกว่า react อ่านแปปเดียวผมเขียน single file component ได้แล้ว
5. css อยู่ในที่ที่มันควรอยู่
ผมไม่มั่นใจว่าการแยก layout กับ style ออกจากกันมันเกิดขึ้นเมื่อไร เกิดขึ้นมาทำไม แต่ขอบคุณ vue ที่จับมันมาอยู่ใน file เดียวกัน
6. library ต่างๆ มาจาก official
3rd party library หลักๆ ที่ต้องใช้กับ vue ล้วนผลิตโดยคุณ Evan You ทั้งนั้น ตรงนี้รู้สึกอุ่นใจ ไม่ต้องเลือก
7. component ไม่ใช่ class
ทำไมผมต้องประกาศ field ใน function data() ทำไมผมไม่ประกาศเป็น field ไปเลย ทำไมผมต้องประกาศ function ใน field methods ทำไมผมไม่ประกาศเป็น function ไปเลย รู้สึกย้อนแย้ง
8. ไม่มั่นใจฝีมือตัวเอง
ด้วยความที่มันง่าย รู้สึกอยากเขียนอะไรก็เขียน จะเขียน vue พร้อมๆกับ vanilla js ก็ทำได้ บางกรณีต้องทำอย่างนั้นด้วย รู้สึกว่าถ้าโปรเจคใหญ่ขึ้น โค้ดผมเละแน่นอน
Angular
9. Angular ผลิตโดย Google และ Microsoft
ผมชาวแอนดรอย มาสาย Google อยู่แล้ว รู้สึกอุ่นใจ จบ
10. TypeScript by default
ผมไม่สามารถทำงานบน dynamically typed languages ได้อย่างมีประสิทธิภาพ รู้สึกหลงทางอยู่ตลอด ไม่รู้ว่าตอนนี้ทำอะไรได้ไม่ได้บ้าง กว่าจะรู้ตัวว่าทำอะไรพังก็ตอนรันแล้ว และที่เกลียดที่สุดคือ undefined is not a function
ที่สำคัญคือไม่ต้องเติม typescript เองให้วุ่นวาย
11. Angular เป็น framework
ด้วยความที่ผมนู้บ ผมสบายใจที่จะทำตามมากกว่าคิดเอง มี cli ให้ใช้ เค้าออกแบบมาให้แล้ว โดยเฉพาะตอนผมเอา bootstrap มาใส่ แล้วเค้าให้ใส่ path css ใน angular-cli.json นี่ถึงกับรักเลยทีเดียว
ยิ่งถ้าพูดถึงการทำงานเป็นทีมแล้ว ทำอะไรตามแบบแผนจะเมนเทนง่ายกว่า
12. component คือ class
ได้ทำอะไรที่คุ้นเคยก็รู้สึกง่าย เรียนรู้ไว มีคลาสอันนึงประกอบด้วย field และ function ที่เรียกจาก html ได้
13. เข้ากันได้ดีกับ WebStorm
IDE เป็นของขาดไม่ได้สำหรับผม IDE เทพๆ ทำให้ประสิทธิภาพเพิ่มขึ้น 83.31% (ตัวเลขสมมติ) โดยเฉพาะ WebStorm จาก JetBrains นี่ซื้อไม่เสียดายตังกันเลยทีเดียว
จริงๆมีเรื่อง license react อีก แต่คิดว่าไม่สำคัญกับผมตอนนี้ แล้วยังมีประเด็นยิบย่อยอื่นๆอีก แต่มันจะเกิน 13 เหตุผล ก็เลยขอจบ uneducated opinionated reasons ไว้เท่านี้ครับ บายย์