Node.js เป็น open-source และ cross-platform JavaScript runtime environment ที่กำลังได้รับความนิยมอย่างสูง โดยทั่วไปเราจะใช้ JavaScript ในฝั่ง client แต่ Node.js ทำให้เราใช้ JavaScript ในฝั่ง Server ได้ด้วย ซึ่ง Node.js สามารถรันได้บน platform ที่หลากหลายทั้ง Windows, Linux, Unix, Mac OS X ฯลฯ
จุดเด่นที่สุดของ Node.js คือมันทำงานแบบ asynchronous ผู้อ่านอาจจะสงสัยว่าแล้วมันดีอย่างไร? ลองมาดูตัวอย่างการจัดการไฟล์เมื่อมีการร้องขอจาก client มาที่ server ของ PHP กับ Node.js เทียบกันดูเพื่อให้เข้าใจมากขึ้นนะครับ
กรณี PHP เมื่อมีการร้องขอเข้ามามันจะทำดังนี้
กรณี Node.js เมื่อมีการร้องขอเข้ามามันจะทำดังนี้
จากตัวอย่างด้านบนจะเห็นว่า Node.js จะตัดขั้นตอนการรอทิ้งแล้วไปทำคำร้องถัดไปเลย ที่เป็นเช่นนี้เพราะ Node.js จะรันแบบ single-threaded และในไลบรารีมาตรฐานก็จะมีเซ็ตของ asynchronous I/O primitives ที่ช่วยป้องกันโค้ด JavaScript จากการ blocking ทำให้ระบบเสถียร และมีประสิทธิภาพมากขึ้น
Synchronous vs Asynchronous |
|
Synchronous คือการรันโค้ดตามลำดับที่เราเขียนไว้ เช่น
|
Asynchronous คือการรันโค้ดที่ไม่จำเป็นต้องเป็นไปตามลำดับที่เราเขียนไว้ เช่น
|
Blocking vs Non-blocking |
|
Blocking หมายถึงการที่เราไม่สามารถดำเนินการต่อไปได้จนกว่าตัวดำเนินการที่กำลังรันอยู่จะเสร็จเสียก่อน เช่น
|
Non-blocking หมายถึงการที่ตัวดำเนินการสามารถทำคำสั่งถัดไปได้เลยโดยไม่ต้องรอให้คำสั่งเดิมทำเสร็จก่อน เช่น
|
ผู้เรียนสามารถอ่านรายละเอียดเพิ่มเติมได้จาก [3] |
อย่างที่ผมเคยเล่าให้ฟังในบทความเรื่อง JavaScript แล้วว่าแต่เดิมภาษา JavaScript ถูกพัฒนามาเพื่อใช้สำหรับ Browser ที่ชื่อ Netscape Navigator ในปี 1995 แต่สิ่งที่ผมยังไม่ได้เล่าถึงก็คือความจริงแล้วในตอนนั้น Netscape ตั้งใจจะขาย Web Server ที่มี environment ชื่อ Netscape LiveWire ซึ่งสามารถสร้าง dynamic page โดยใช้ JavaScript ทางฝั่ง server ด้วย แต่น่าเสียดายที่ Netscape LiveWire ไม่ประสบความสำเร็จ และการใช้ JavaScript ทางฝั่ง server ก็ไม่ได้รับความนิยมเลยจนกระทั่ง Node.js ถือกำเนิดขึ้นมา
สิ่งที่ทำให้ Node.js เป็นที่นิยมขึ้นมาคือการที่มันมาในช่วงเวลาที่เหมาะสม เมื่อเทียบกับ JavaScript ที่เกิดมาตั้งแต่ปี 1995 แล้ว Node.js เพิ่งเกิดมาเมื่อปี 2009 เท่านั้น ต้องขอบคุณ "Web 2.0" applications (เช่น Flickr, Gmail ฯลฯ) ที่แสดงให้โลกรู้ว่าเว็บสมัยใหม่ควรหน้าตาเป็นอย่างไร
ไม่กี่ปีก่อนที่ Node.js จะเกิด นักพัฒนาเบื้องหลัง browser ชื่อดังทั้งหลายแข่งขันกันทำงานอย่างหนักเพื่อจะใช้ JavaScript ให้ได้ดีที่สุดและหาทางทำให้ JavaScript สามารถรันได้เร็วมากขึ้น เพื่อให้ผู้ใช้งานได้รับประสิทธิภาพที่ดีที่สุด ซึ่งผลจากการแข่งขันนี้ทำให้เกิดการพัฒนา Chrome V8 (open-source JavaScript engine ของ The Chromium Project) ขึ้นมา และ Node.js ก็ใช้ engine นี้นั่นเอง
แต่การที่ Node.js เป็นที่นิยมขึ้นมาไม่ใช่แค่ว่ามันมาถูกที่ถูกเวลาเท่านั้นนะครับ แต่เพราะมันได้แสดงให้เห็นแล้วว่า การออกแบบและแนวคิดของมันช่วยนักพัฒนาทั้งหลายให้สามารถใช้ JavaScript ทางฝั่ง server ได้ง่ายขึ้นมากด้วยครับ
หลังจากติดตั้ง Node.js เสร็จเรียบร้อยแล้ว ต่อนี้เราจะมาเขียนโค้ดภาษา JavaScript และใช้ Node.js เพื่อแสดงข้อความ Hello World บนหน้าเว็บอย่างง่ายๆกัน
เท่านี้เราก็จะสามารถเขียนโค้ด JavaScript เพื่อแสดงข้อความ Hello World ในฝั่ง server ได้แล้ว ง่ายใช่ไหมครับ? ถ้าอยากรู้เรื่องของ Node.js หรือ Tutorial เพิ่มเติมก็อ่านได้จาก [1] และ [2] นะครับ
สุดท้ายนี้ถ้าผู้อ่านอยากเรียนรู้เรื่อง JavaScript, Node.js และเรื่องเกี่ยวกับ Web Programming อย่างลึกซึ้งก็ขอแนะนำคอร์ส Web Programming ของทาง EPT ครับ สามารถดูรายละเอียดคอร์สได้โดยคลิกที่นี่หรือติดต่อได้ที่ 085-350-7540
แล้วพบกันใหม่บทความหน้านะครับ
[1] https://nodejs.dev/introduction-to-nodejs
[2] https://www.w3schools.com/nodejs/nodejs_intro.asp
[3] https://stackoverflow.com/questions/10570246/what-is-non-blocking-or-asynchronous-i-o-in-node-js
Tag ที่น่าสนใจ: java c# vb.net python c c++ machine_learning web database oop cloud aws ios android
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM