Dark mode
Node.js เบื้องต้น
Node.js เป็นแพลตฟอร์มที่นิยมใช้สำหรับพัฒนาแอปพลิเคชันด้านเซิร์ฟเวอร์ด้วย JavaScript
Introduction
ส่วนนี้จะแนะนำภาพรวมและประวัติของ Node.js
Node.js คือแพลตฟอร์มสำหรับพัฒนาแอปพลิเคชันด้านเซิร์ฟเวอร์ที่ใช้ภาษา JavaScript โดยมีลักษณะสำคัญดังนี้:
- รันบนเครื่องยนต์ V8 ของ Google Chrome
- ทำงานแบบ Event-Driven และ Non-blocking I/O
- มีระบบโมดูล ที่ช่วยในการจัดระเบียบโค้ด
- มี ecosystem ที่ใหญ่ที่สุด (npm) ด้วยแพ็กเกจมากกว่า 1 ล้านตัว
เหมาะสำหรับ:
- แอปพลิเคชัน Real-time (Chat, Gaming)
- API Services
- Microservices
- เครื่องมือพัฒนาซอฟต์แวร์
ประวัติโดยย่อ:
- พัฒนาโดย Ryan Dahl ในปี 2009
- เวอร์ชันปัจจุบัน: LTS (Long Term Support)
- ถูกใช้งานโดยบริษัทใหญ่เช่น Netflix, Uber, PayPal
Key Features
Feature | Description |
---|---|
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
Basic Usage
ส่วนนี้จะแนะนำวิธีการใช้งาน Node.js ในระดับพื้นฐาน
การจัดการโปรเจค
- สร้างโปรเจคใหม่:
bash
npm init -y
bash
yarn init -y
bash
pnpm init -y
- ติดตั้งแพ็กเกจ:
bash
npm install package-name
bash
yarn add package-name
bash
pnpm add package-name
การรันโค้ด
- รันไฟล์ JavaScript:
bash
node filename.js
- ตัวอย่างเซิร์ฟเวอร์พื้นฐาน:
javascript
const http = require('http');
const server = http.createServer((req, res) => {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
});
server.listen(3000, () => {
console.log('Server running at http://localhost:3000/');
});
How Node.js Works
Node.js ใช้สถาปัตยกรรมแบบ Event Loop ที่ทำงานบน Single Thread โดยมีองค์ประกอบหลัก:
- Event Loop - จัดการงานแบบไม่บล็อก (non-blocking) และ asynchronous
- Worker Pool - จัดการงานที่ใช้ CPU หนักผ่าน libuv
- V8 Engine - JavaScript engine จาก Google
- Libuv - Library สำหรับจัดการ I/O แบบ asynchronous
ลำดับการทำงาน:
- รับ Request
- ส่งงาน I/O ให้ระบบปฏิบัติการ
- ทำงานต่อไปโดยไม่รอ
- เมื่องาน I/O เสร็จ เรียก callback function
- Event Loop execute callback
ข้อดี:
- ประสิทธิภาพสูงเมื่อทำงานกับ I/O
- ใช้ทรัพยากรน้อย
- เขียนโค้ดง่ายกว่าแบบ multi-thread
ข้อจำกัด:
- ไม่เหมาะกับงานที่ใช้ CPU หนัก
- Callback hell หากไม่จัดการ asynchronous code ให้ดี
Core APIs
ส่วนนี้จะสรุป API หลักที่มาพร้อมกับ Node.js
Module | Description | Common Methods |
---|---|---|
fs | การทำงานกับระบบไฟล์ | readFile, writeFile, readdir, stat |
http | เซิร์ฟเวอร์และไคลเอนต์ HTTP | createServer, request, get |
path | อรรถประโยชน์เกี่ยวกับเส้นทางไฟล์ | join, resolve, basename, dirname |
os | อรรถประโยชน์เกี่ยวกับระบบปฏิบัติการ | platform, arch, cpus, freemem |
events | ระบบส่งและรับเหตุการณ์ | on, emit, once, removeListener |
stream | การจัดการสตรีมข้อมูล | Readable, Writable, Duplex, Transform |
util | ฟังก์ชันอรรถประโยชน์ | promisify, inspect, format |
child_process | การสร้างโปรเซสย่อย | exec, spawn, fork |
crypto | ฟังก์ชันการเข้ารหัส | createHash, randomBytes, createCipher |
url | การแยกวิเคราะห์ URL | parse, format, resolve |
querystring | การจัดการ query string | parse, stringify |
zlib | การบีบอัดข้อมูล | createGzip, createGunzip, createDeflate |
Common Modules
ส่วนนี้จะแสดงลิงก์ไปยังเอกสารอย่างเป็นทางการของโมดูลต่างๆ
fs
-เอกสารอย่างเป็นทางการ
http
-เอกสารอย่างเป็นทางการ
path
-เอกสารอย่างเป็นทางการ
os
-เอกสารอย่างเป็นทางการ
events
-เอกสารอย่างเป็นทางการ
stream
-เอกสารอย่างเป็นทางการ
util
-เอกสารอย่างเป็นทางการ
child_process
-เอกสารอย่างเป็นทางการ
crypto
-เอกสารอย่างเป็นทางการ
url
-เอกสารอย่างเป็นทางการ
querystring
-เอกสารอย่างเป็นทางการ
zlib
-เอกสารอย่างเป็นทางการ
Resources
ส่วนนี้จะแสดงแหล่งข้อมูลเพิ่มเติมสำหรับศึกษา Node.js