Skip to content

Node.js เบื้องต้น

Node.js เป็นแพลตฟอร์มที่นิยมใช้สำหรับพัฒนาแอปพลิเคชันด้านเซิร์ฟเวอร์ด้วย JavaScript

Key Features

FeatureDescription
Runtime Environmentสภาพแวดล้อมสำหรับรัน JavaScript บนเซิร์ฟเวอร์
Event-driven Architectureทำงานแบบ event-driven และ non-blocking I/O
Asynchronous Programmingรองรับการเขียนโปรแกรมแบบ asynchronous
Single-threaded with Event Loopใช้ single thread พร้อม event loop
Cross-platformทำงานได้บน Windows, Linux และ macOS
NPM (Node Package Manager)ระบบจัดการแพ็กเกจที่ใหญ่ที่สุด
Built-in Modulesมีโมดูลพื้นฐานเช่น fs, http, path ให้ใช้งาน

Installation

ส่วนนี้จะแนะนำวิธีการติดตั้ง Node.js บนระบบ

ติดตั้ง Node.js ด้วยวิธีที่เหมาะกับระบบ:

bash
# ติดตั้งผ่าน Scoop
scoop install nodejs

# ติดตั้งผ่าน Mise
mise use node@latest

# ติดตั้งผ่าน Proto
proto install node
bash
# ติดตั้งผ่าน Homebrew
brew install node
bash
# สำหรับ Ubuntu/Debian
sudo apt install nodejs npm

ตรวจสอบการติดตั้ง

bash
node --version
npm --version
bash
yarn --version
bash
pnpm --version
bash
bun --version

Get Started

  1. สร้างโปรเจคใหม่
bash
npm init
bash
yarn init -y
bash
pnpm init -y
bash
bun init -y
  1. รันโปรแกรม
bash
node index.js
  1. ติดตั้งแพ็กเกจตัวอย่าง
bash
npm install express
bash
yarn add express
bash
pnpm add express
bash
bun add express

Basic Usage

ตัวอย่างการใช้งานพื้นฐานของ Node.js:

วัตถุประสงค์คำอธิบายModules Used
HTTP Serverสำหรับสร้างเว็บเซิร์ฟเวอร์พื้นฐานhttp
File Readingการอ่านเนื้อหาจากไฟล์fs
File Writingการเขียนเนื้อหาลงในไฟล์ใหม่fs
Modulesการสร้างและใช้งานโมดูลแบบ custommodule.exports, require
js
// Import http module
const http = require('http');

// Create HTTP server
const server = http.createServer((req, res) => {
  // Set response header
  res.writeHead(200, {'Content-Type': 'text/plain'});
  // Send response
  res.end('Hello from Node.js');
});

// Start server on port 3000
server.listen(3000, () => {
  console.log('Server running at http://localhost:3000');
});
js
// Import fs module
const fs = require('fs');

// Read file asynchronously with callback
fs.readFile('file.txt', 'utf8', (err, data) => {
  if (err) throw err; // Handle error
  console.log(data); // Output file content
});
js
// Import fs promises API
const fs = require('fs').promises;

// Async function to read file
async function readFile() {
  try {
    // Await file reading
    const data = await fs.readFile('file.txt', 'utf8');
    console.log(data); // Output file content
  } catch (err) {
    console.error(err); // Handle error
  }
}
js
// Import fs module
const fs = require('fs');

// Write file asynchronously
fs.writeFile('newfile.txt', 'New content', (err) => {
  if (err) throw err; // Handle error
  console.log('File written successfully');
});
js
// Export math functions
module.exports = {
  add: (a, b) => a + b,    // Addition
  subtract: (a, b) => a - b // Subtraction
};
js
// Import custom math module
const math = require('./math');

// Use imported functions
console.log(math.add(5, 3)); // Output: 8
  1. สร้าง HTTP Server
  2. อ่านไฟล์
  3. เขียนไฟล์
  4. สร้างและใช้งานโมดูล

How Node.js Works

ComponentRoleDescription
nodejs.org faviconEvent LoopCore Processorตัวประมวลผลหลักแบบ single-thread ที่จัดการการทำงานแบบไม่บล็อก
libuv.org faviconLibuvI/O Handlerไลบรารีที่จัดการการทำงาน I/O แบบ asynchronous
v8.dev faviconV8 EngineJS Runtimeตัวรัน JavaScript
nodejs.org faviconWorker PoolTask Offloaderจัดการงานที่ใช้ CPU หนักในเธรดแยก
ขั้นตอนกระบวนการทำงาน
1รับคำขอจาก Client
2มอบหมายงาน I/O ให้ Libuv จัดการ
3ส่งงานที่ใช้ CPU หนักไปให้ Worker Pool
4ประมวลผลงานที่เสร็จสิ้นผ่าน Event Loop
5ส่งผลลัพธ์กลับผ่าน V8

Built-in Modules

File System & Path

โมดูลสำหรับทำงานกับระบบไฟล์และเส้นทาง

ModuleDescriptionCommon MethodsUse CaseBetter Libraries
nodejs.org faviconfsระบบไฟล์readFile, writeFileอ่าน/เขียนไฟล์npmjs.com faviconfs-extra
nodejs.org faviconpathจัดการเส้นทางไฟล์join, resolveรวมเส้นทางไฟล์unjs.io faviconpathe
nodejs.org faviconzlibบีบอัดข้อมูลcreateGzipบีบอัดไฟล์unjs.io faviconh3

Networking & Web

โมดูลสำหรับทำงานกับเครือข่ายและเว็บ

ModuleDescriptionCommon MethodsUse CaseBetter Libraries
nodejs.org faviconhttpเซิร์ฟเวอร์ HTTPcreateServerสร้าง web serverunjs.io faviconh3, nitro.unjs.io faviconnitro
nodejs.org faviconurlจัดการ URLparseแยกวิเคราะห์ URLunjs.io faviconufo
nodejs.org faviconquerystringจัดการ query stringparseอ่าน query parametersnpmjs.com faviconqs

System & Utilities

โมดูลสำหรับทำงานกับระบบและอรรถประโยชน์

ModuleDescriptionCommon MethodsUse CaseBetter Libraries
nodejs.org faviconosข้อมูลระบบปฏิบัติการplatform, freememตรวจสอบทรัพยากรระบบnodejs.org faviconnode:os
nodejs.org faviconutilอรรถประโยชน์promisifyแปลง callback functionnodejs.org faviconnode:util
nodejs.org faviconchild_processโปรเซสย่อยexecรันคำสั่งระบบnpmjs.com faviconexeca

Core Functionality

โมดูลหลักสำหรับการทำงานพื้นฐาน

ModuleDescriptionCommon MethodsUse CaseBetter Libraries
nodejs.org faviconeventsระบบเหตุการณ์on, emitสร้าง custom event systemnpmjs.com faviconeventemitter3
nodejs.org faviconstreamจัดการสตรีมcreateReadStreamอ่านไฟล์ขนาดใหญ่nodejs.org faviconnode:stream
nodejs.org faviconcryptoการเข้ารหัสcreateHashเข้ารหัส passwordnpmjs.com favicon@node-rs/bcrypt

Last updated: