Frontend กับ Backend ต่างกันอย่างไร
Frontend อธิบายแบบง่าย ๆ คือ ข้อมูลบนเว็บที่ User มองเห็น ภาษาที่เป็น Frontend จะมีแค่ 3 ภาษาหลัก ๆ คือ HTML, CSS, และ JS (ใครยังไม่เคยเรียน HTML กับ CSS สามารถ เริ่มเรียนกับทีมงานมืออาชีพจาก Designil ได้เลยครับ)- HTML (Hypertext Markup Language) คือ ภาษาสำหรับแสดงข้อมูลบนเว็บ
- CSS (Cascading StyleSheet) คือ ภาษาสำหรับตกแต่งข้อมูลบนเว็บให้สวยงาม
- JS (JavaScript) คือ ภาษาสำหรับเพิ่มลูกเล่นให้ข้อมูลบนเว็บ
รวมเทคโนโลยีสำหรับพัฒนา Frontend ในปี 2018
เราคุยกันไปก่อนหน้านี้แล้วว่าภาษา Frontend ได้แก่ HTML, CSS, JS ซึ่งเวลาเราเลือกใช้เครื่องมือต่าง ๆ ในการพัฒนา Frontend เรามักจะแบ่งเครื่องมือออกเป็น 2 หมวดหลัก ๆ:- เครื่องมือ HTML & CSS คือ เครื่องมือสำหรับจัด Layout และเพิ่มความสวยงามบนหน้าเว็บไซต์ เช่น Bootstrap, Material UI
- เครื่องมือ JS คือ เครื่องมือสำหรับจัดการ Flow ของข้อมูลบนเว็บไซต์ เช่น React, Angular, VueJS
เครื่องมือ HTML & CSS
Bootstrap
Bootstrap ถือเป็น CSS Framework ที่ได้รับความนิยมสูงสุดในขณะนี้ครับ ก่อนหน้านี้เป็นโปรเจคของ Twitter ก็เลยเรียกว่า Twitter Bootstrap แต่ตอนนี้ทีมหลักที่พัฒนาเค้าย้ายบริษัทแล้วครับ เลยเรียกว่า Bootstrap เฉย ๆ แทน ข้อดีของ Bootstrap คือ มันสามารถใช้งานได้ง่าย, มีเว็บสอนใช้เยอะแยะมากมาย, มีของที่ต้องการใช้มาให้ครบ, และเว็บหลักของ Bootstrap เองก็เขียนวิธีใช้ออกมาได้ดี ถ้าสงสัยตรงไหนเราก็ลองก็อปปี้โค้ดจากเว็บไปวางเพื่อใช้งานได้เลยครับ
ถ้าเป็นมือใหม่ที่อยากเรียนรู้เกี่ยวกับ Bootstrap แอดแนะนำให้ลองอ่านบทความที่แอดเขียนเป็นสัปดาห์ฮะ ซึ่งเกี่ยวกับ Bootstrap เวอร์ชั่นล่าสุด คู่มือการใช้ Bootstrap 4 ฉบับสมบูรณ์
ส่วนใครที่จะนำไปใช้ควบคู่กับเครื่องมือ JS ก็มีคนเอา Bootstrap ไปยัดใส่เครื่องมือเหล่านี้ให้เรียบร้อยแล้วครับ (เช่น React-Bootstrap https://react-bootstrap.github.io/) ความแตกต่างของพวกนี้กับเวอร์ชั่นปกติ ก็คือ ส่วนประกอบใน Bootstrap ต่าง ๆ จะถูกแปลงมาให้เข้ากับเครื่องมือ JS นั้น ๆ เรียบร้อยแล้ว เช่น ถ้าเป็น React เค้าก็จะแปลงส่วนประกอบเป็นภาษา JSX ให้ครับ
เว็บไซต์ Bootstrap: https://getbootstrap.com/
Bulma
Bulma เป็น CSS Framework สำหรับคนทำเว็บที่เน้นใช้เทคโนโลยีใหม่ครับ ระบบ Layout ของ Bulma ใช้เทคโนโลยี Flexbox ในการเขียน ทำให้มั่นใจได้ 100% ว่าเปิดใน Browser เก่า ๆ แล้วเว็บพังแน่นอน (อ้าว) ซึ่งถ้าเรามั่นใจว่าผู้ใช้เว็บของเราใช้บราวเซอร์ใหม่ ๆ เช่น Chrome, Edge, Firefox, Opera, Safari เวอร์ชั่นล่าสุด (เวลาเราพูดถึง Browser เก่า ๆ จะหมายถึง Internet Explorer เป็นส่วนใหญ่ครับ) แอดแนะนำว่าให้ลองใช้ Bulma ดูเลยครับ เพราะหน้าตาเค้าสวยงามน่าใช้งานจริง ๆ และโค้ดสะอาดกว่า Bootstrap ในระดับหนึ่ง
ถ้าเป็นมือใหม่ที่สนใจเกี่ยวกับ Bulma แอดเคยเขียนบทความสรุปการใช้ Bulma ไปแล้ว สามารถอ่านกันได้เลยที่ แนะนำ Bulma: CSS Framework ใหม่สำหรับคนเบื่อ Bootstrap
สำหรับการนำไปใช้กับเครื่องมือ JS ด้วยความที่ Bulma เป็นแค่ภาษา HTML กับ CSS เท่านั้น (แตกต่างกับ Bootstrap ที่มี JS ใส่มาด้วย) เราสามารถโยนเข้าไปในโปรเจคที่ใช้เครื่องมือ JS ตัวไหนก็ได้เลยครับ แต่ถ้าใครอยากได้แบบที่ประกอบเสร็จมาแล้ว แอดเจอตัวที่ชื่อว่า BloomerJS (https://bloomer.js.org) ครับ
เว็บไซต์ Bulma: https://bulma.io/
Material Design
Material Design เป็น คอนเซปต์การออกแบบของ Google ซึ่งถ้าใครใช้ Android ก็จะได้เห็น UI ชุดนี้อยู่ทุกวันครับ
สำหรับคนที่ต้องการใช้ Material Design ในการทำเว็บไซต์ สามารถเริ่มได้จาก Library ต่าง ๆ ที่นำ Material มารวมกับ JS Framework / Library ให้เราแล้วครับ เช่น Material ของ Angular (https://material.angularjs.org/latest/)หรือ MaterialUI (https://material-ui.com/) ของ React
เลือกใช้ CSS Framework ตัวไหนดี
การเลือก CSS Framework ปกติแล้วแอดจะเลือกตามความเหมาะสมของทีมครับ เช่น ถ้าทำงานโปรเจคเล็ก ๆ คนเดียว เลือกใช้ตัวที่เราถนัดได้เลย ถ้าทำงานเป็นทีม ใช้ CSS Framework ที่เรียนรู้ง่ายและได้รับความนิยมอย่าง Bootstrap ก็จะทำให้ทำงานกับทีมง่ายขึ้นครับ (อยู่กับความถนัดของคนอื่นในทีมด้วย) ส่วนใครที่เพิ่งมาเรียนรู้ CSS Framework แอดแนะนำให้เริ่มจาก Bootstrap เพราะตัวอย่างโค้ดทำมาดีมาก ใช้งานได้ง่าย และนำไปใช้หางานได้สะดวกครับJS Framework / Library
ตัวที่ได้รับความนิยมและได้ยินกันบ่อย ๆ ที่สุดจะมี 3 ตัวครับ คือ Angular, React, VueJS มาดูกันเลยว่าแต่ละตัวแตกต่างกันอย่างไรบ้างAngular
Angular สร้างขึ้นมาเพื่อใช้แบบตัวเดียวจบสำหรับทั้งโปรเจค มีของมาให้ครบทั้งหมด บางคนเลยเรียก Angular ว่าเป็น JS Framework ครับ ซึ่งแตกต่างกับ React หรือ VueJS ที่เป็น JS Library คือ ใช้เป็นส่วนแสดงผลเท่านั้น สำหรับองค์ประกอบอื่น ๆ ของ Library เช่น การจัดการ flow / state ของข้อมูล อันนี้เราต้องเอา Library อื่นมาเชื่อมอีกทีครับ เช่น Redux
ในการใช้ Angular เวอร์ชั่น 5 เราต้องเรียนวิธีเขียน Typescript ซึ่งเป็น JavaScript ที่มี static typing = การเช็คประเภทตัวแปรตอน compile ทำให้เราเจอบั๊กได้เร็วกว่าปกติ ประหยัดเวลาในการพัฒนาไปพอสมควร เรียกได้ว่ามีทั้งข้อดี แต่ก็มีข้อเสียที่ต้องเรียนรู้ภาษาใหม่ ทำให้มี Learning Curve สำหรับทีมสูงขึ้นครับ
ด้วยความที่ Angular มีส่วนประกอบต่าง ๆ มาให้เยอะมาก เวลาที่ใช้ในการเรียนรู้ก็สูงกว่าตัวอื่น ๆ ไปด้วยเช่นกัน แต่ถ้าเทียบว่าตัวอื่นก็ต้องเรียนรู้ library เสริมด้วย แอดคิดว่าก็ใช้เวลาไม่น้อยไปกว่ากันเท่าไหร่
Angular พัฒนาโดย Google ทำให้มีความน่าเชื่อถือว่าใช้ ๆ ไปแล้วจะไม่ปิดตัวหนีไป บบดื้อ ๆ แน่นอน เพราะหลาย ๆ โปรเจคใน Google ก็ใช้อยู่เช่นกันครับ
บริษัทใหญ่หลาย ๆ เจ้าใช้ Angular กันอยู่ เช่น Youtube, Paypal, Google ฯลฯ ทำให้งานด้าน Angular มักพบได้บ่อย ๆ ในทีมของบริษัทใหญ่ (หรือบริษัทเล็กที่เป็น outsource ของบริษัทใหญ่อีกที)
เว็บไซต์ Angular: https://angular.io/
ReactJS
ReactJS มีข้อดีตรงที่เรียนรู้ง่าย เพราะเป็นแค่ส่วนการแสดงผล (view) และมีความยืดหยุ่นสูง สามารถเขียนด้วย JavaScript เวอร์ชั่นเก่า (ES5) หรือเวอร์ชั่นใหม่ (ES6 ES7 ...) ก็ได้ ไม่ต้องเรียน TypeScript แบบ Angular ครับ
อย่างไรก็ตาม คนใช้ React ต้องเรียน JSX ซึ่งเป็นภาษา HTML + JS นั่นเอง แต่ใช้เวลาไม่เยอะมากเพราะ syntax ค่อนข้างเหมือนเดิมเลยครับ
พัฒนาและใช้งานโดยเว็บไซต์ Facebook ทำให้ React มีฐานผู้ใช้เยอะมาก โดยเฉพาะในไทยเราที่คนติด FB เป็นอันดับต้น ๆ ของโลก เรามีงาน React Bangkok ที่จัดขึ้นมาหลายปีแล้วและมีผู้เข้าร่วมเยอะมาก แต่แอดได้ข่าวมาว่าปีหน้าจะกลายเป็นงาน JavaScript Bangkok แทนเพื่อรองรับ library อื่น ๆ ด้วยครับ
ข้อเสียเล็กน้อยที่แอดเจอเอง คือ เว็บไซต์หลักของ React สอนใช้แบบเข้าใจยากไปหน่อย ถ้าสนใจศึกษาเอง อ่านได้ใน บทความสอนใช้ React แบบเรียนรู้เอง ได้เลยฮะ
มีบริษัทใหญ่ ๆ ใช้ React เยอะเหมือนกัน เช่น Facebook, Netflix, Dropbox, Airbnb ฯลฯ และงานในสายนี้ก็หาได้ไม่ยากครับ เพราะเป็น Library ที่ได้รับความนิยมสูง
เว็บไซต์ ReactJS: https://reactjs.org/
VueJS
VueJS เป็น JS Library ที่ใหม่กว่าพี่ ๆ ทั้งสองด้านบน หน้าตาการใช้งานก็จะคล้าย ๆ กับเอา Angular กับ React มารวมกัน (รวมข้อดีนะฮะ ไม่ใช่ข้อเสีย)
ข้อดีของ VueJS คือ เรียนรู้ได้ง่าย และใช้งานได้สะดวก จับโยนใส่โปรเจคไหนก็ใช้งานได้เลย ไม่ต้องขึ้นโปรเจคใหม่ก็ได้
เวลาเขียน VueJs เราไม่ต้องใช้ภาษาใหม่เลย ใช้ HTML + CSS + JS ธรรมดาก็เพียงพอแล้วครับ ซึ่งน่าจะทำให้คนที่เริ่มต้นใหม่ ๆ ใช้งานได้ง่ายขึ้นด้วย
ผู้พัฒนา VueJS เป็นอดีตพนักงานของ Google ซึ่งเป็นชาวจีน ทำให้บริษัทใหญ่ ๆ ในจีนใช้ VueJS กันเยอะครับ ตัวอย่างเช่น Alibaba, Baidu ส่วนในไทยเราเองก็มีงาน Vue.js Meetup ที่จัดกันอยู่บ่อย ๆ เช่นกันครับ
ด้วยความที่ VueJS ไม่มีบริษัทใหญ่อยู่เบื้องหลัง อาจจะทำให้ผู้ใช้รู้สึกว่าอนาคตไม่มั่นคงอยู่บ้าง แต่ไม่ต้องกลัวเพราะ community VueJS ตอนนี้ค่อนข้างใหญ่มาก ๆ เทียบเท่า React เลยครับ ต่อให้ผู้พัฒนาหลักออกไปก็ยังมีคนช่วยดูแลแน่นอนครับ
เว็บไซต์ VueJS: https://vuejs.org/
เลือกใช้ JS Framework / Library ตัวไหนดี
หลังจากเรารู้จักกับ 3 ตัวหลัก ๆ ที่คนใช้กันแล้ว มาถึงคำถามโลกแตกของยุคนี้ว่าใช้ตัวไหนดีครับ จริง ๆ คำตอบแรกจากแอดก็คงเป็น "ถนัดตัวไหนก็ใช้ตัวนั้น" ครับ เพราะถ้าเรามีความรู้ตัวไหนอยู่แล้ว นำไปต่อยอดจะง่ายกว่ามาเรียนรู้ตัวอื่นใหม่ ยกเว้นว่าเราต้องการเรียนตัวใหม่จริง ๆ หรือสถานการณ์บังคับ ทีนี้สำหรับคนที่ยังไม่เคยเรียนตัวไหนมาก่อนเลย และอยากเรียนเพื่อให้เข้าใจพื้นฐานของ JS Framework / Library เหล่านี้ - แอดแนะนำให้เริ่มจาก VueJS ก่อนเลยครับ เพราะเรียนรู้ได้ง่ายที่สุด และมีฟีเจอร์ที่คล้ายกับตัวอื่น ๆ สำหรับคนที่อยากเรียนเพื่อนำไปหางาน - แอดแนะนำ React เพราะมีบริษัทใช้เยอะ และมีความยืดหยุ่นกว่า Angular (ทำให้เราต้องเรียนเยอะขึ้นด้วย เพราะต้องไปเชื่อมกับ Library อื่นอีก) ส่วนใครที่มีเวลา และอยากเข้าใจว่าควรเลือกตัวไหนดี แนะนำให้ลองนำทั้ง 3 ตัวนี้มาสร้างแอพแบบเดียวกัน หรือลองเข้าเว็บ TodoMVC (http://todomvc.com/) เค้ามีการเอาแต่ละตัวมาทำเป็นแอพจดตารางงาน + มี source code ให้เราเปรียบเทียบกันได้ง่าย ๆ เลยครับ สำหรับท่านใดมีคำถามอื่น ๆ เพิ่มเติม หรืออยากคุยกันว่าตัวไหนดีกว่า หรือชอบบทความแนวนี้ หรืออยากให้แอดเอาเรื่องไหนมาเขียนอีก สามารถมาพูดคุยกันได้ใน Designil Facebook Page เช่นเดิมเลยครับผมสุดท้ายนี้ สำหรับท่านที่ไม่อยากเลือกเองให้ปวดหัว แอดแนะนำให้ไปหาโปรแกรมเมอร์ที่มีความรู้เพื่อปรึกษาหรือจ้างให้เค้าพัฒนาได้ครับ เช่น บริการรับทำเว็บไซต์จาก fastwork Fastwork เป็นเว็บไซต์ที่ให้บริการฟรีแลนซ์ในด้านต่าง ๆ ซึ่งบริการทำเว็บไซต์ของเค้าก็มีผู้ใช้บริการมากขึ้นเรื่อย ๆ ครับ ลองดูรายละเอียดเพิ่มเติมได้ที่นี่ https://fastwork.co/web-development