Hello Node.js !
Node.js คือ ?
Node.js ไม่ใช่ภาษาโปรแกรมใหม่แต่อย่างใด แต่เป็น platform ที่ทำให้สามารถ รัน Java script บนฝั่งเซิร์ฟเวอร์ได้ โดยเพิ่มเติมไลบรารี่ที่เกี่ยวข้องกับการจัดการไฟล์ การรับส่งข้อมูล และอื่นๆ
Node.js เกิดขึ้นได้อย่างไร ?
Ryan Dahl เขียน Node.js ขึ้นในปี ค.ศ. 2009 โดย Node ทำงานอยู่บน V8 JavaScript engine
V8 JavaScript engine คืออะไร ?
เป็น Javascript engine ที่เขียนขึ้นด้วยภาษา C++ นำมาใช้ใน Google chrome browser
ระบบของ Node.js
Single thread
การทำงานจะใช้เพียง Thread เดียว
*หากไม่ได้ใช้ module cluster หรือ webworker-threads
Event-driven
การทำงานจะเป็นแบบ Event-based คือ จะทำงานตามที่ได้รับมอบหมายเพียงอย่างเดียว ไม่มีการรอผลลัพธ์จากการทำงานที่ไม่เกี่ยวข้อง ตัวอย่างเช่น พยาบาลคนหนึ่งมีหน้าที่แจกแบบฟอร์มตรวจสุขภาพ และบันทึกข้อมูลลงคอมพิวเตอร์ เมื่อมีผู้ป่วยมาเข้าคิวเพื่อรับแบบฟอร์ม พยาบาลจะแจกแบบฟอร์มให้ หลังจากได้รับแบบฟอร์มแล้วเขาต้องไปตรวจสุขภาพตามห้องตรวจต่างๆด้วยตัวเอง ระหว่างนี้พยาบาลจะไม่รอแต่จะแจกแบบฟอร์มให้คนถัดไปทันที เมื่อชายคนนั้นตรวจสุขภาพครบทุกอย่างแล้วจึงจะมาเข้าคิวอีกครั้งเพื่อให้พยาบาลบันทึกลงคอมพิวเตอร์
Non-blocking I/O
คำสั่งที่เกี่ยวข้องกับ I/O เช่น คิวรี่ฐานข้อมูล เรียกดูข้อมูลจากเว็บไซต์เขียนหรืออ่านไฟล์ จะมีการทำงานแบบ asynchronous คือไม่มีการหยุดการทำงาน(block) เพื่อรอผลลัพธ์จากคำสั่งเหล่านี้
จุดเด่นของ Node.jsคืออะไร
การทำงานแบบ Event-driven และ non-blocking I/O ทำให้ไม่มีการรอผลลัพธ์ที่ที่เกิดจาก I/O request เช่น เมื่อส่งคิวรี่ไปยังฐานข้อมูล DBMS จะต้องใช้เวลาสักพักในการค้นหาข้อมูลที่เราต้องการและส่งกลับมา แต่ Node.js จะไม่รอและทำงานในคำสั่งถัดไปทันที เมื่อข้อมูลที่ต้องการถูกส่งกลับมาแล้วจึงจะนำข้อมูลนั้นไปทำงานต่อ ช่วยลดเวลาที่เสียไปจากการรอผลลัพธ์
การทำงานเพียง Thread เดียวทำให้ไม่มีการ context switch ระหว่าง thread ช่วยลดเวลาที่เสียไปจาก context switch
ทั้งสามเหตุผลทำให้ Node.js ทำงานได้รวดเร็ว โดยเฉพาะเมื่อแอพพลิเคชั่นที่ต้องการสร้าง มีการเรียกใช้งาน I/O เยอะ
Node.js ใช้ ภาษา Java script ซึ่งเป็นภาษาที่นิยมใช้ในงานด้าน Frontend ช่วยลดเวลาในการศึกษาเรียนรู้ในการศึกษาภาษาใหม่
มี Libraries เสริมจำนวนมากทำให้เราไม่ต้องเสียเวลามาเขียนเอง
การติดตั้ง
LTS Version (4.3.0)
Stable latest version (5.6.0)
ลงผ่าน package manager