โหมดมืด
Node.js
ส่วนหนึ่งของ Beginner Book
JavaScript เกิดมาในเบราว์เซอร์ — เอาไว้ทำให้หน้าเว็บขยับได้ Node.js คือสิ่งที่พา JavaScript ออกมานอกเบราว์เซอร์ มารันบนเครื่อง server, บน laptop ของคุณ, ในตู้คอนเทนเนอร์บน cloud — เขียน backend API, CLI tool, build script, แม้แต่ตัว tool ที่คุณใช้ทุกวัน (npm, eslint, vite, prettier) ก็เป็นโปรแกรม Node ทั้งนั้น
หนังสือเล่มนี้คือ ชั้นที่หายไป ระหว่าง JavaScript (ภาษา) กับ NestJS (framework) — สอน Node.js ตั้งแต่ "runtime มันทำงานยังไง" ไปจนถึง "deploy backend ขึ้น production ได้จริง"
ก่อนเริ่ม — ควรผ่าน JavaScript มาก่อน อย่างน้อยถึง บทที่ 9 (Async Deep — event loop, Promise, async/await) และ บทที่ 10 (Modules) เพราะ Node.js คือ "JavaScript + ความสามารถใหม่" ไม่ใช่ภาษาใหม่ — ถ้า async ยังงง บทที่ 3–5 ของเล่มนี้จะตามไม่ทัน · ส่วน TypeScript ไม่บังคับ แต่ถ้ามีจะช่วยตอนขึ้น NestJS
ทำไมต้องมีเล่มนี้ — ช่องว่างที่หนังสือเล่มอื่นกระโดดข้าม
เล่ม JavaScript สอนภาษา + จบที่ฝั่ง browser (DOM, event) · เล่ม NestJS เริ่มต้นด้วยประโยคว่า "ปัญหาของ Node.js + Express แบบเปล่า ๆ คืออะไร" — แล้วก็ลุย decorator/DI ทันที โดย สมมติว่าคุณรู้จัก Node, npm, Express, การเปิด server ฟัง port อยู่แล้ว
แต่ความรู้ตรงกลางนั้น — runtime ทำงานยังไง, npm คืออะไร, fs/http/stream/process ใช้ยังไง, ทำไม Node ถึง single-thread แต่รับ request พร้อมกันเป็นหมื่นได้ — ไม่เคยมีบทไหนปูให้ เล่มนี้คือบทที่ปูตรงนั้น
อ่านจบแล้วคุณจะ ไม่ใช่แค่ "ใช้ framework เป็น" แต่เข้าใจว่าใต้ framework มีอะไร — ซึ่งคือสิ่งที่แยก junior ออกจาก senior
หนังสือนี้พาคุณไปถึงไหน
อ่านจบ + ทำ checkpoint หมด คุณจะ:
- เข้าใจ runtime model ของ Node — V8 + libuv + event loop — ว่าทำไม single-thread ถึงเร็ว และเมื่อไหร่มันช้า
- จัดการ npm ecosystem เป็น —
package.json, semver, lockfile,npm/npx/pnpm, npm scripts - ใช้ core modules ที่ backend ต้องใช้ทุกวัน —
fs,path,http,process,events,stream,Buffer - เขียน HTTP server จาก
httpเปล่า ๆ แล้วเข้าใจว่าทำไมโลกถึงใช้ Express/Fastify - จัดการ async + error ระดับ production —
EventEmitter,AbortController,unhandledRejection, graceful shutdown - เขียน REST API จริง ต่อ PostgreSQL พร้อม connection pool + validation
- รู้วิธี scale — worker_threads, cluster, child_process, profiling หา bottleneck
- deploy ขึ้น production เป็น — Docker, process manager, health check, structured logging, security
- พร้อมขึ้น NestJS โดยเข้าใจทุกอย่างที่ Nest ซ่อนไว้ใต้ decorator
หนังสือนี้ออกแบบมาให้ใคร
✅ คนที่เขียน JavaScript เป็นแล้ว อยากทำ backend / API / tool ฝั่ง server ✅ Frontend dev ที่อยากเข้าใจ build tool (Vite/webpack) และ SSR ว่ารันบนอะไร ✅ คนที่จะขึ้น NestJS / Next.js แต่ไม่อยากใช้ framework แบบงม ๆ ไม่รู้ข้างใน ✅ คนที่มาจากภาษาอื่น (Java/Python/Go) อยากรู้ว่า "โลก Node ต่างกันตรงไหน"
❌ คนที่ยังไม่เคยเขียน JavaScript เลย — กลับไปเริ่ม JavaScript บทที่ 0 ก่อน
ทำไม Node.js — และมันต่างจากภาษา backend อื่นยังไง
Node = "ที่ ๆ JavaScript ไปรันบน server" — ไม่ใช่ภาษาใหม่ แค่สภาพแวดล้อมใหม่ จุดเด่นมี 3 คำสำคัญ (อ่านช้า ๆ เปิดทีละคำ):
- runtime (สภาพแวดล้อมที่รันโค้ด JS พร้อม API ระดับ OS ให้ — อ่านว่า รัน-ไทม์)
- event-driven (ขับเคลื่อนด้วยเหตุการณ์: "มีอะไรเกิด ค่อยทำ" ไม่นั่งรอ — อ่านว่า อีเวนต์-ดริฟเวน)
- non-blocking I/O (รับงานรับ/ส่งข้อมูลแบบไม่ค้างรอ — อ่านว่า นอน-บล็อกกิง ไอ-โอ) บน thread เดียว (เธรด = เส้นทางการทำงาน 1 สาย)
เหมาะกับงานที่ต้องรอ I/O เยอะ ๆ (API ที่คุยกับ DB/network) มากกว่างานคำนวณหนัก ๆ — รายละเอียดทั้งหมดอยู่ใน บทที่ 0
text
Concurrency เหมาะกับ ระวัง
Node.js Event loop ⭐ I/O-bound (API, real-time) CPU-bound งานคำนวณหนัก
(1 thread + libuv)
Java / Spring Thread per req งานหนัก ๆ, enterprise memory + ความซับซ้อน
Go Goroutine ¹ ทั้งสองอย่าง, deploy ง่าย ecosystem เล็กกว่า
Python Thread + GIL ² data/AI, script เร็ว ช้ากว่าตอน CPU งานหนัก
(3.13+ มี no-GIL (GIL คลายลงเฉพาะ build
build), asyncio แบบ free-threaded ³)¹ goroutine = เธรดจิ๋วที่ Go จัดการเองในเบื้องหลัง เบากว่า thread ปกติมาก รันพร้อมกันได้เป็นแสนตัว² GIL (Global Interpreter Lock) = กลไกที่ล็อกให้ Python รันโค้ดได้ทีละ thread เท่านั้นในแต่ละจังหวะ³ free-threaded build (PEP 703) ยังเป็น experimental opt-in ไม่ใช่ default build ตั้งแต่ 3.13/3.14 — ตรวจสถานะล่าสุดก่อนอ้างอิงจริงจัง
→ Node = "เร็วในการสร้าง + ecosystem ใหญ่ที่สุดในโลก (npm) + ภาษาเดียวกับ frontend" — เลือกเมื่อทีมเป็น JS อยู่แล้ว หรืองานเป็น I/O-bound (ซึ่งคือ web API ส่วนใหญ่)
เครื่องมือที่ใช้ในเล่มนี้
- Node.js LTS (เวอร์ชันเลขคู่ เช่น 20.x, 22.x — LTS = Long Term Support, เสถียร ใช้ใน production ได้) ติดตั้งผ่าน nvm เพื่อสลับเวอร์ชันได้
- npm (มากับ Node) หรือ pnpm (เร็วกว่า ประหยัด disk) — เล่มนี้ใช้ npm เป็นหลัก ระบุตรงไหนต่างจะบอก
- VS Code + ส่วนเสริม ESLint
- ตัวอย่างใช้ JavaScript (ESM) เป็นหลัก แทรก TypeScript ตรงที่เกี่ยวข้องกับ NestJS
📌 เกี่ยวกับเวอร์ชัน Node — Node ออก major version ใหม่ทุก 6 เดือน และเลื่อน LTS ทุกปลายปี (เลขคู่ขึ้น Active LTS ตุลาคม) ฟีเจอร์ใหม่ที่เล่มนี้พูดถึง (built-in
fetch,node --test,--watch,--env-file) เสถียรหมดแล้วตั้งแต่สาย 20+ — เช็คเวอร์ชัน LTS ปัจจุบันที่ nodejs.org/about/releases เสมอก่อนติดตั้ง (last reviewed: 2026-06 — ตัวเลขเวอร์ชันใน schedule เปลี่ยนทุก 6 เดือน)
บทเรียน
| # | บท | สอนอะไร | ระดับ |
|---|---|---|---|
| 0 | Node.js คืออะไร + Setup | runtime model (V8+libuv), event loop ฝั่ง server, ติดตั้งด้วย nvm, REPL, โปรแกรมแรก | พื้นฐาน |
| 1 | Modules + npm | CommonJS vs ESM ใน Node, module resolution, package.json, semver, lockfile, npm/npx/pnpm, scripts | พื้นฐาน |
| 2 | Core Modules + process | global objects, process (argv/env/exit), path, os, util, __dirname vs import.meta | พื้นฐาน |
| 3 | Async + Events | callback→promisify→async/await, EventEmitter, timers, event loop phases, AbortController | ระดับกลาง |
| 4 | Filesystem + Streams | fs (sync/promises), Buffer, stream 4 ชนิด, pipe, backpressure, pipeline | ระดับกลาง |
| 5 | HTTP + Web Server | สร้าง server จาก http เปล่า → routing เอง → ทำไมต้องมี Express, middleware คืออะไร | ระดับกลาง |
| 6 | Error Handling + Debugging | error ใน async, uncaughtException/unhandledRejection, exit code, --inspect + debugger | ระดับกลาง |
| 7 | Config, CLI + Lifecycle | env/dotenv/--env-file, 12-factor config, สร้าง CLI tool, signal (SIGTERM), graceful shutdown | ระดับกลาง |
| 8 | Testing | node:test (built-in), assert, Vitest, mock/spy, test HTTP ด้วย supertest, coverage | ระดับกลาง |
| 9 | Database + REST API จริง | ต่อ PostgreSQL (pg), connection pool, REST API end-to-end + validation + error format | ระดับกลาง |
| 10 | Performance + Scaling | ความจริงของ single-thread, worker_threads, cluster, child_process, profiling, memory leak | ระดับสูง |
| 11 | Production + Modern Node | Docker, process manager, health/logging/security, ฟีเจอร์ Node ใหม่, TS กับ Node, Deno/Bun, roadmap สู่ NestJS | ระดับสูง |
วิธีอ่านที่แนะนำ
- เปิด terminal ค้างไว้ — Node เป็นเรื่องของ server/CLI ต้องรันคำสั่งจริง ไม่ใช่เปิดเบราว์เซอร์ดู
- เปิด Node REPL (
nodeใน terminal) ลองโค้ดสั้น ๆ ได้ทันที - อ่านเรียงทีละบท — บท 3 (async) คือหัวใจ ถ้าข้ามจะงงทั้งเล่ม
- ทำ Checkpoint ทุกบท — Node มีรายละเอียดที่อ่านเฉย ๆ ไม่ติด ต้องพิมพ์เอง
- อย่าเพิ่งลง framework — เขียน server ด้วย
httpเปล่า ๆ ให้เป็นก่อน (บท 5) แล้ว Express/Nest จะเข้าใจง่ายขึ้นมาก
← กลับสารบัญหลัก | ➡️ บทที่ 00: Node.js คืออะไร
🔤 Glossary · 📋 Style guide · 📅 last_verified: 2026-06-03