Dark mode
flowchart TD A[Client ส่ง Request] --> B{Node.js: งานนี้รอ I/O ไหม?} B -- ไม่ (CPU-bound) --> F[ประมวลผลทันที] B -- ใช่ (I/O-bound) --> C[ส่งงานให้ Libuv/OS จัดการ] C --> D[Node.js ไปทำงานอื่นต่อ] subgraph Background Processing[ระบบเบื้องหลัง (Libuv/OS)] direction LR C --> G[ทำงาน I/O...] G --> H[เสร็จแล้ว ส่งผลลัพธ์ + Callback] end H --> E[Event Loop: รับผล Callback เข้าคิว] E --> F F --> I[ส่ง Response กลับ Client]
%% Node.js Scope
subgraph NodeJS Application
direction TB
B
D
E
F
end
**ตัวอย่างโค้ด: สร้างเว็บเซิร์ฟเวอร์ง่ายๆ**
```javascript
// 1. เรียกใช้โมดูล 'http' ที่มีมาให้ใน Node.js
const http = require("http");
// 2. สร้างเซิร์ฟเวอร์
const server = http.createServer((request, response) => {
// ฟังก์ชันนี้จะถูกเรียกทุกครั้งเมื่อมี Request เข้ามา
console.log("มี request เข้ามาที่:", request.url);
// 3. กำหนด Header ของ Response ว่าเป็นข้อความธรรมดา
response.writeHead(200, { "Content-Type": "text/plain; charset=utf-8" });
// 4. ส่งข้อความกลับไปให้ Client
response.end("สวัสดีชาวโลกจาก Node.js!");
});
// 5. กำหนดให้เซิร์ฟเวอร์รอฟัง Request ที่ Port 3000
const port = 3000;
server.listen(port, () => {
console.log(`เซิร์ฟเวอร์พร้อมทำงานแล้วที่ http://localhost:${port}`);
// เมื่อเซิร์ฟเวอร์พร้อมทำงาน ฟังก์ชันนี้จะถูกเรียก (นี่ก็เป็น Callback!)
});