mean stack คืออะไร

mean stack logomean stack เป็นการรวมเอา ชุด service จำนวน 4 อย่าง ที่เอามาประกอบกัน เพื่อใช้สำหรับรันงาน Web Application/Website ในฝั่ง server

M มาจาก mongoDB

mongoDB เป็น Database NoSQL ตัวหนึ่ง (อ่านเรื่อง NoSQL เพิ่มเติม) ซึ่งทำงานได้เร็ว และรองรับการขยายตัวได้ง่าย ได้รับความนิยมเพิ่มขึ้นเรื่อยๆ อ่านเพิ่มเติม mongoDB คืออะไร

N มาจาก Node.js

ผมขออธิบาย ตัว N ก่อนก็แล้วกัน (เดี่ยวจะเข้าใจว่าเพราะอะไร) Node.js เป็นภาษาที่ถูกเอามารันเป็น server side โดย Node.js เองนั้น เวลาเราจะใช้งานเราจะใช้ภาษา JavaScript เขียนขึ้นมา แล้วเอาไปรันใน Node.js environment ได้ หากคนที่เคยทำเว็บมา ก็เปรียบได้กับภาษา JavaScript คือ PHP หรือ .Net นั่นแหล่ะ และ Node.js เอง ก็เปรียบกับ Apache หรือ IIS ยังไงยังนั้นเลย จริงๆรายละเอียดมากกว่านี้ อ่านเพิ่มเติมได้ที่ Node.js คืออะไร

E มาจาก Express

Express เนี่ย เป็น Framework ที่พัฒนาขึ้นมาด้วย Node.js ครับ ถ้าคนที่เคยพัฒนาเว็บ มันก็เปรียบได้กับพวก CodeIgniter , Laravel, Yii, CakePHP หรือ .NET MVC Framework นั่นแหล่ะครับ โดยใน MEAN stack เราก็จะพัฒนาบน Express framework ด้วย Node.js นั่นเอง (ถึงขออธิบายเรื่อง Node.js ก่อน) โดยส่วนนี้ เน้นที่การเอามาทำเป็น RESTful API เป็นหลักเลย ไม่ได้เอามาทำหน้าเว็บทุกองค์ประกอบ เหมือนอย่าง Framework ที่ยกตัวอย่างมาเบื้องต้นครับ

A มาจาก AngularJS

AngularJS เนี่ย มันเป็น JavaScript framework สำหรับฝั่ง Client ใช้งาน (ก็คือ คนที่เปิดหน้าเว็บนั่นแหล่ะ) โดยเค้าสร้างมันขึ้นมาโดยตั้งเป้าหมายเอาไว้ว่า จะให้มันทำงานแบบ dynamic ไปตามที่ข้อมูลเปลี่ยนไปเรื่อยๆ โดยที่ไม่ต้อง refresh หรือเปลี่ยนหน้าเว็บเลย หากเป็นเมื่อก่อน ก็คือการที่เราเขียน JavaScript เพื่อทำการ Ajax Load ข้อมูลแล้วเอามาแสดง แต่ว่าใน AngularJS ก็จะใช้ syntax เฉพาะของตัวเอง ที่ง่าย สั้นกว่า นอกเหนือจากนั้นก็ยังมีเรื่องที่ช่วยงานเราอีกมาก ไม่ว่าจะเป็นเรื่องการทำ localization (หน้าเว็บที่ทำงานแบบ multi language) , reusable component ก็คือ เขียน component เพื่อให้ทำงานเฉพาะอย่างแล้วเอามาเรียกใช้ซ้ำในส่วนต่างๆได้ โดยหากมองภาพรวมง่ายๆ มันเป็น html code ที่ทำหน้าที่ เรียกข้อมูลจากฝั่ง server ออกมาแสดงผล โดยไม่ต้อง refresh หรือเปลี่ยนหน้าเลย เน้นการ call ผ่าน AJAX นั่นแหล่ะครับ

เมื่อเอามารวมกัน เราจึงได้ Web Server+Web Application

ฝั่ง server ก็คือ Node.js ที่รัน Express โดยใช้ JavaScript เขียนเข้าไปเพื่อให้ทำงานที่ฝั่ง server ในการไปคำนวน หรือหาข้อมูลมาตอบเรา โดยตัวที่จะถามหาข้อมูลก็คือ AngularJS ในฝั่งผู้ใช้งานนั่นเอง สำหรับการและเปลี่ยนข้อมูลกันนั้นจะทำงานบน Standard RESTful API ก็คือ ให้ Node.js + Express ทำงานเป็น server API แล้ว AngularJS ก็เรียกข้อมูลอย่างที่ตัวเองต้องการออกมาแสดง เพื่อเอามาแสดงข้อมูลหน้าเว็บอย่างที่คนใช้งานต้องการ สำหรับข้อมูลที่เก็บในฝั่ง server ก็เก็บใน mongoDB database นั่นเอง

ภาษา JavaScript จึงเป็นหัวใจ

จะเห็นได้ว่า Node.js ก็ใช้ JavaScript และการเขียน AngularJS เพื่อดึงข้อมูลจาก API ของ Express นั้น ก็ใช้ภาษา JavaScript ด้วยเช่นกัน เราจึงต้อง stong ในการเขียน JavaScript มากทีเดียว แต่เชื่อได้ว่าคนที่เขียนเว็บมาก่อนแล้วก็น่าจะไม่ยากเกินไป

ใช้ mean stack แต่ว่าเปลี่ยน database เป็น MySQL ได้มั้ย

ได้ครับ ไม่ได้มีใครห้ามเอาไว้ จริงๆแล้วถ้าเราหาเหตุผลที่เหมาะสมได้ว่าเพราะอะไร เราจึงใช้ MySQL แล้วดีกว่า mongoDB ก็ใช้งานได้เลย เพราะเค้าก็ไม่ได้ strict เราต้องทำทำอย่างตามนั้นหรอก แต่ว่าเราก็ต้องดำเนินการติดตั้งเพิ่ม และปรับแต่งนิดหน่อยเพื่อให้ทำงานเชื่อมกับ MySQL ได้ ซึ่งคนที่เข้าใจพื้นฐานของ Node.js ไม่ยากเลย (npm install mysql นั่นไง แล้วก่อนใช้ก็ require ในไฟล์ตามปกติครับ หรือว่า เข้าไปตั้งค่าใน express ก็ได้ครับ [https://expressjs.com/en/guide/database-integration.html#mysql])

มือใหม่เริ่มด้วย mean stack ดีมั้ย

ขอให้ตอบตัวเอง ว่าเป้าหมายคืออะไร ถ้าต้องการศึกษา Node.js ให้แยกไปศึกษา Node.js เพียวๆดีกว่า หรือว่า รู้จัก Node.js แล้ว แต่อยากรู้จัก Express ก็ให้แยกไปทดสอบใช้งาน Express ให้เข้าใจจะดีกว่า เพราะว่า mean stack มันมีการปรับแต่งอะไรหลายอย่างมาแล้ว ให้เราเริ่มต้นใช้งานได้ง่ายมาก จนทำให้เราอาจจะไม่เข้าใจ หลายๆเรื่องเมื่อใช้ไปนานๆ

เอา mean stack มาใช้งาน production ได้มั้ย

ได้ครับ ใช้กันเยอะด้วย แต่ว่าก่อนเอามาใช้ อยากให้เข้าใจ Node.js , Express, mongoDB, AngularJS ที่เป็นหัวใจพื้นฐานที่สุดของมันให้ได้ก่อนเพราะว่า เมื่อเราเจอปัญหาบางอย่าง หรือว่า บางงานต้องใช้อะไรพิเศษ เช่น อาจจะต้องทำกล่องสนทนาแบบ real time เราก็จะไม่เข้าใจว่า ต้องปรับโค้ดส่วนไหนยังไงบ้าง เพื่อให้ทำงานอย่างที่เราต้องการให้ได้นั่นจะกลายเป็นปัญหาทันทีครับ

3 thoughts on “mean stack คืออะไร

  1. Hello, I enjoy reading all of your article. I wanted to write a little comment to support you.

Leave a Reply

Your email address will not be published. Required fields are marked *