Skip to content

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 เดือน)

บทเรียน

#บทสอนอะไรระดับ
0Node.js คืออะไร + Setupruntime model (V8+libuv), event loop ฝั่ง server, ติดตั้งด้วย nvm, REPL, โปรแกรมแรกพื้นฐาน
1Modules + npmCommonJS vs ESM ใน Node, module resolution, package.json, semver, lockfile, npm/npx/pnpm, scriptsพื้นฐาน
2Core Modules + processglobal objects, process (argv/env/exit), path, os, util, __dirname vs import.metaพื้นฐาน
3Async + Eventscallback→promisify→async/await, EventEmitter, timers, event loop phases, AbortControllerระดับกลาง
4Filesystem + Streamsfs (sync/promises), Buffer, stream 4 ชนิด, pipe, backpressure, pipelineระดับกลาง
5HTTP + Web Serverสร้าง server จาก http เปล่า → routing เอง → ทำไมต้องมี Express, middleware คืออะไรระดับกลาง
6Error Handling + Debuggingerror ใน async, uncaughtException/unhandledRejection, exit code, --inspect + debuggerระดับกลาง
7Config, CLI + Lifecycleenv/dotenv/--env-file, 12-factor config, สร้าง CLI tool, signal (SIGTERM), graceful shutdownระดับกลาง
8Testingnode:test (built-in), assert, Vitest, mock/spy, test HTTP ด้วย supertest, coverageระดับกลาง
9Database + REST API จริงต่อ PostgreSQL (pg), connection pool, REST API end-to-end + validation + error formatระดับกลาง
10Performance + Scalingความจริงของ single-thread, worker_threads, cluster, child_process, profiling, memory leakระดับสูง
11Production + Modern NodeDocker, process manager, health/logging/security, ฟีเจอร์ Node ใหม่, TS กับ Node, Deno/Bun, roadmap สู่ NestJSระดับสูง

วิธีอ่านที่แนะนำ

  1. เปิด terminal ค้างไว้ — Node เป็นเรื่องของ server/CLI ต้องรันคำสั่งจริง ไม่ใช่เปิดเบราว์เซอร์ดู
  2. เปิด Node REPL (node ใน terminal) ลองโค้ดสั้น ๆ ได้ทันที
  3. อ่านเรียงทีละบท — บท 3 (async) คือหัวใจ ถ้าข้ามจะงงทั้งเล่ม
  4. ทำ Checkpoint ทุกบท — Node มีรายละเอียดที่อ่านเฉย ๆ ไม่ติด ต้องพิมพ์เอง
  5. อย่าเพิ่งลง framework — เขียน server ด้วย http เปล่า ๆ ให้เป็นก่อน (บท 5) แล้ว Express/Nest จะเข้าใจง่ายขึ้นมาก

← กลับสารบัญหลัก | ➡️ บทที่ 00: Node.js คืออะไร


🔤 Glossary · 📋 Style guide · 📅 last_verified: 2026-06-03