ทำความรู้จักกับ Node.js
บทแรกของบทเรียน Node.js นี้ จะเป็นการแนะนำให้คุณรู้จักกับ Node.js และประวัติความเป็นมาของมัน เราจะมาดูกันว่า Node.js คืออะไร มันเกิดขึ้นเนื่องจากวัตถุประสงค์อะไร และมีอะไรที่เกี่ยวข้องกับ Node.js ที่คุณต้องทราบก่อนเริ่มเขียนโปรแกรมบน Node.js นี่เป็นเนื้อหาในบทนี้
- Node.js คืออะไร
- ประวัติของ Node.js
- Node.js และภาษา JavaScript
- Chrome V8 engine
- NPM Package management
Node.js คืออะไร
Node.js คือสภาพแวดล้อมการทำงานของภาษา JavaScript นอกเว็บเบราว์เซอร์ที่ทำงานด้วย V8 engine นั่นหมายความว่าเราสามารถใช้ Node.js ในการพัตนาแอพพลิเคชันแบบ Command line แอพพลิเคชัน Desktop หรือแม้แต่เว็บเซิร์ฟเวอร์ได้ โดยที่ Node.js จะมี APIs ที่เราสามารถใช้สำหรับทำงานกับระบบปฏิบัติการ เช่น การรับค่าและการแสดงผล การอ่านเขียนไฟล์ และการทำงานกับเน็ตเวิร์ก เป็นต้น
Node.js ถูกพัฒนาและทำงานด้วยใช้ Chrome V8 engine สำหรับคอมไพล์ภาษา JavaScript ให้เป็นภาษาเครื่องด้วยการคอมไพล์แบบ Just-in-time (JIT) เพื่อเพิ่มประสิทธิภาพการทำงานของภาษา JavaScript จากที่แต่เดิมมันเป็นภาษาที่มีการทำงานแบบ Interpreted
Node.js เป็นโปรแกรมที่สามารถใช้ได้ทั้งบน Windows, Linux และ Mac OS X นั่นหมายความว่าคุณสามารถเขียนโปรแกรมในภาษา JavaScript และนำไปรันได้ทุกระบบปฏิบัติการที่สนับสนุนโดย Node.js นี่เป็นแนวคิดของการเขียนครั้งเดียวแต่ทำงานได้ทุกที่ (Write once, run anywhere)
ประวัติของ Node.js
Node.js ถูกพัฒนาขึ้นมาครั้งแรกโดยนักพัฒนาชาวอเมริกัน Ryan Dahl ในปี 2009 สำหรับใช้เป็นสภาพแวดล้อมเพื่อที่จะใช้ภาษา JavaScript ในการพัฒนาเว็บไซต์ในรูปแบบของ Server side ในช่วงแรกนั้น Node.js สนับสนุนการทำงานเพียงแค่บน Linux และ Mac OS X เท่านั้น และสำหรับ Windows นั้นถูกเพิ่มการสนับสนุนเข้ามาในภายหลัง
แรงบันดาลใจในการสร้าง Node.js ขึ้นมาก็เพื่อใช้เป็นเว็บเซิร์ฟเวอร์ที่สามารถรองรับจำนวนการใช้งานได้มากขึ้นกว่าเว็บเซิร์ฟเวอร์ในรูปแบบเดิมอย่าง Apache HTTP Server โดยใช้หลักของการเขียนโปรแกรมแบบ Asynchronous หรือ Non-blocking I/O ที่ใช้ฟังก์ชัน Callback และ Event loop ในการจัดการกับ Request แทนการสร้าง Thread และ Process ที่ต้องใช้ทรัพยากรของเว็บเซิร์ฟเวอร์เป็นจำนวนมาก
Node.js และภาษา JavaScript
ในช่วงเริ่มแรกภาษา JavaScript ถูกพัฒนาขึ้นมาสำหรับเขียน Script บนเว็บเบราว์เซอร์เพื่อทำให้หน้าเว็บสามารถตอบสนองได้แบบ Real-time สิ่งหนึ่งที่ทำให้ Node.js เลือกภาษา JavaScript เป็นภาษาหลักในการเขียนโปรแกรมเนื่องจากเห็นประสิทธิภาพการทำงานของ V8 engine ซึ่งเป็น Engine ที่ใช้รันภาษา JavaScript บน Google Chrome พร้อมทั้งภาษา JavaScript ยังมีรูปแบบการทำแบบ Asynchronous I/O ซึ่งเป็นสิ่งที่ Node.js ต้องการอยู่แล้ว
นั่นหมายความว่าในปัจจุบัน ภาษา JavaScript ไม่ได้ถูกจำกัดสำหรับการเขียนโปรแกรมเพียงบนเว็บเบราว์เซอร์อีกต่อไป ในการมาของ Node.js เราสามารถเขียนโปรแกรม Command line สร้างเว็บเซิร์ฟเวอร์ หรือเขียนโปรแกรมบน Desktop โดยการใช้ Framework อย่าง Electron หรือโปรแกรมทุกรูปแบบเหมือนกับภาษาอื่นๆ ได้
ข้อดีอีกอย่างหนึ่งในการใช้ภาษา JavaScript ของ Node.js คือทำให้การพัฒนาเว็บไซต์ทำได้อย่างขึ้นสำหรับนักพัฒนา เนื่องจากพวกเขาสามารถใช้ภาษา JavaScript สำหรับทั้ง Front-end และ Back-end ได้โดยไม่ต้องศึกษาภาษาเฉพาะในแต่ละด้าน ตัวอย่างของการพัฒนาเว็บโซต์ในรูปแบบนี้ เช่น React.js ซึ่งเป็นไลบรารีโดย Facebook
นอกจากนี้ คุณยังสามารถใช้ภาษาอื่นๆ สำหรับเขียนโปรแกรมบน Node.js ได้ เช่น ภาษา TypeScript เพื่อทำให้การเขียนโปรแกรมมีการเข้มงวดกับประเภทข้อมูลมากขึ้น และสามารถช่วยลดข้อผิดพลาดในการพัฒนาโปรแกรมได้ แต่เนื่องจาก Node.js สนับสนุนเพียงภาษา JavaScript ดังนั้นโปรแกรมที่เขียนโดยภาษาอื่นจะถูกแปลงเป็น JavaScript ก่อน
Chrome V8 engine
V8 engine นั้นเป็นตัวแปรสำหรับรันภาษา JavaScript หรือ JavaScript engine ที่ใช้บนเว็บเบราว์เซอร์ Google Chrome ซึ่ง Engine นี้ถูกพัฒนาโดย The Chromium Project สำหรับเพิ่มประสิทธิภาพการทำงานของภาษา JavaScript ร่วมกับเว็บเบราว์เซอร์ให้ดีมากขึ้น โดยการใช้หลักการคอมไพล์ก่อนที่จะประมวลผล (Just-in-time compilation) ด้วยเหตุผลนี้ Node.js เลือกที่จะใช้ V8 engine เป็นตัวคอมไพล์ภาษาของมัน
NPM Package management
NPM คือระบบจัดการแพ็คเกจ โมดูล หรือไลบรารีของภาษา JavaScript และ Node.js ใช้ npm สำหรับเป็นตัวจัดการแพ็จ ในปัจจุบัน npm มีมากกว่า 1 ล้านไลบรารีบน npmjs จากนักพัฒนาทั่วโลกที่คุณสามารถนำมาใช้เขียนโปรแกรมบน Node.js โดยไลบรารีทั้งหมดบน npm ที่เป็นแบบสาธารณะ (Public repository) จะเป็นซอร์ฟแวร์แบบโอเพ่นซอร์สและฟรี ในปัจจุบัน npm อยู่ภายใต้การดูแลของ Github และ Microsoft
ในบทนี้ คุณได้ทำความรู้จักกับ Node.js และได้เข้าใจแนวคิดสำหรับการนำ Node.js ไปใช้งานในการเขียนโปรแกรมด้วยภาษา JavaScript เราได้พูดถึง V8 Engine ซึ่งเป็น JavaScript engine ที่ทำงานเบื้องหลัง Node.js และ npm ระบบจัดการแพ็คเกจที่ Node.js ใช้สำหรับจัดการกับแพ็กเกจในการเขียนโปรแกรม