7 ธ.ค. เวลา 06:55 • การศึกษา

NodeJS คืออะไร

โดย
ในยุคแรกของการพัฒนาเว็บ จาวาสคริปต์ถูกจำกัดบทบาทอยู่เพียงการทำให้เว็บเพจมีปฏิสัมพันธ์ แต่ทั้งหมดทำงานอยู่เพียงฝั่งผู้ใช้ (Client-side) เท่านั้น จนกระทั่ง Node.js ปรากฏตัวขึ้น และ ปฏิวัติวงการด้วยการนำจาวาสคริปต์ออกจากเว็บเบราว์เซอร์ พร้อมมอบพลังในการสร้างเซิร์ฟเวอร์ และ แอปพลิเคชันที่สมบูรณ์ได้ด้วยภาษาเดียว
2
  • ​Node.js คืออะไร
Node.js คือ สภาพแวดล้อมรันไทม์ (Runtime Environment) สำหรับจาวาสคริปต์ที่ทำงานบนฝั่งเซิร์ฟเวอร์ (Server-Side) ถูกสร้างขึ้นบนเอ็นจิ้น V8 JavaScript Engine ของ Google Chrome
💡 Node.js เป็นโปรแกรมที่ทำให้คุณสามารถรันโค้ดจาวาสคริปต์บนคอมพิวเตอร์ หรือ เซิร์ฟเวอร์ได้โดยตรง ไม่ต้องพึ่งพาเบราว์เซอร์อีกต่อไป ทำให้ JavaScript กลายเป็นภาษาที่ทรงพลังสำหรับการพัฒนาแอปพลิเคชันขนาดใหญ่ได้
  • ​Node.js ทำงานอย่างไร
1) Event-Driven (ขับเคลื่อนด้วยเหตุการณ์)
○ ระบบทำงานโดยตอบสนองต่อ "เหตุการณ์" (Event) เช่น การร้องขอ HTTP ใหม่ หรือ การอ่านไฟล์เสร็จสิ้น
○ แทนที่จะรอให้งานหนึ่งเสร็จก่อนถึงจะเริ่มงานใหม่ (Synchronous) Node.js จะลงทะเบียน Callback Function ไว้ แล้วไปทำงานอื่นต่อ
2) Non-blocking I/O (การรับ-ส่งข้อมูลที่ไม่ปิดกั้น)
○ เมื่อแอปต้องทำงานที่ใช้เวลานาน เช่น อ่านไฟล์ หรือ
ดึงข้อมูลจากฐานข้อมูล Node.js จะไม่หยุดรอ (Block)
○ มันจะส่งงานนั้นให้ระบบปฏิบัติการจัดการ แล้วปล่อยให้เธรดหลัก (Single Thread) ไปรับมือกับคำร้องขออื่นๆ ต่อได้
○ เมื่องาน I/O เสร็จสิ้น ระบบจะเรียก Callback Function ที่ลงทะเบียนไว้เพื่อจัดการผลลัพธ์
  • ​ตัวอย่างเปรียบเทียบ
ในระบบแบบ Node.js (Non-blocking): พนักงานเสิร์ฟ 1 คน รับออเดอร์จากลูกค้า A ส่งให้ครัว แล้วไม่ยืนรอ แต่กลับไปรับออเดอร์จากลูกค้า B, C, D ได้ทันที เมื่ออาหารเสร็จ ก็ส่งสัญญาณมา พนักงานจึงนำไปเสิร์ฟได้ ทำให้สามารถให้บริการลูกค้าจำนวนมากได้พร้อมกัน
3
  • ​ประเภทของงานที่เหมาะสำหรับ Node.js
Node.js เหมาะอย่างยิ่งกับแอปพลิเคชันที่ต้องจัดการกับการเชื่อมต่อจำนวนมากแบบพร้อมกัน (Real-time, High Concurrency) เช่น:
1) เว็บ API และ Backend Services
สร้าง RESTful API หรือ GraphQL API สำหรับเว็บ และ MoblieApp
2) แอปพลิเคชันแบบเรียลไทม์
แชทแอปพลิเคชัน, เครื่องมือการทำงานร่วมกันออนไลน์, ระบบแจ้งเตือนแบบทันที
3) ไมโครเซอร์วิส (Microservices)
เหมาะสำหรับสถาปัตยกรรมที่แบ่งแอปออกเป็นบริการย่อยๆ ขนาดเล็ก
4) เครื่องมือและสคริปต์ Command Line (CLI Tools)
สร้างเครื่องมือช่วยพัฒนาต่างๆ เช่น เว็บแพ็คเกอร์ (Webpack)
5) API Gateway
จัดการ และ ประสานการร้องขอไปยังไมโครเซอร์วิสต่างๆ
  • ​ประโยชน์
✅️ ภาษาเดียวทั้ง Frontend และ Backend
ลดความซับซ้อนในการพัฒนาด้วยการใช้จาวาสคริปต์เพียงภาษาเดียว (Full-Stack JavaScript)
✅️ ประสิทธิภาพสูงสำหรับแอปที่ต้องรับหลายคำขอ
ด้วยแบบจำลอง Non-blocking I/O ทำให้จัดการคำขอพร้อมกันได้จำนวนมากโดยใช้ทรัพยากรน้อย
✅️ ระบบนิเวศที่เข้มแข็ง (NPM)
มีแพ็คเกจสำเร็จรูปมากกว่า 1 ล้านแพ็คเกจใน npm (Node Package Manager) ให้เลือกใช้ ช่วยให้พัฒนางานได้รวดเร็ว
✅️ เรียนรู้และเริ่มต้นง่าย
นักพัฒนา Frontend ที่คุ้นเคยกับจาวาสคริปต์อยู่แล้วสามารถข้ามมาเรียนรู้ Backend ด้วย Node.js ได้ง่าย
✅️ ชุมชนที่แข็งแกร่ง
มีชุมชนผู้พัฒนาขนาดใหญ่ทั่วโลก คอยสนับสนุน และ สร้างไลบรารีอยู่เสมอ
  • ​ตัวอย่างการใช้งานเบื้องต้น (สร้างเซิร์ฟเวอร์อย่างง่ายใน 10 บรรทัด)
```javascript
// 1. โหลดโมดูล 'http' ที่มากับ Node.js
const http = require('http');
// 2. สร้างเซิร์ฟเวอร์ด้วยฟังก์ชัน createServer
const server = http.createServer((req, res) => {
// 3. ตั้งค่า Header ของ Response
res.writeHead(200, { 'Content-Type': 'text/html' });
 
// 4. ส่งเนื้อหา HTML กลับไป
res.end('<h1>สวัสดีจากเซิร์ฟเวอร์ Node.js!</h1><p>นี่คือการตอบกลับแรกของคุณ</p>');
});
// 5. ให้เซิร์ฟเวอร์รอฟังที่พอร์ต 3000
server.listen(3000, () => {
console.log('เซิร์ฟเวอร์กำลังทำงานที่ http://localhost:3000');
});
```
  • ​วิธีการรัน
1) บันทึกโค้ดเป็นไฟล์ server.js
2) เปิดเทอร์มินัลแล้วรันคำสั่ง: node server.js
3) เปิดเบราว์เซอร์ เข้าไปที่ http://localhost:3000
✏️ Shoper Gamer
  • ​Download Node.js 👇
  • ​JavaScript คืออะไร? ทำไมถึงสำคัญที่สุดในโลกเว็บ 👇
  • ​Backend คืออะไร 👇
Credit :
👇
  • ​https://nodejs.org/en/learn/getting-started/introduction-to-nodejs
  • ​https://www.blockdit.com/posts/62c44887c98bef79aadf787b
  • ​https://www.blockdit.com/posts/5e0f23c2cf77037f3a485863
  • ​https://www.blockdit.com/posts/5fd5dc4eb5d3790cbfd8964d
โฆษณา