Dark mode
Zlib Module (ซิปข้อมูล)
ทำไม zlib ถึงสำคัญ?
zlib คือเครื่องมือสำหรับบีบอัด (compress) และขยาย (decompress) ข้อมูลใน Node.js เช่น ซิปไฟล์, ลดขนาดข้อมูลก่อนส่งผ่าน network มือใหม่ควรรู้จัก zlib เพราะช่วยประหยัด bandwidth และ storage
- ใช้ zlib ลดขนาดไฟล์ใหญ่ เช่น log, รูปภาพ, ข้อมูล backup
- ส่งข้อมูลผ่าน network ได้เร็วขึ้น
- รองรับรูปแบบ gzip, deflate ฯลฯ
แนะนำ zlib module
zlib
เป็น built-in module สำหรับบีบอัดและขยายข้อมูลใน Node.js รองรับทั้ง synchronous และ asynchronous
ฟังก์ชันหลักที่ใช้บ่อย
zlib.gzip(input, callback)
บีบอัดข้อมูลเป็น gzip
js
// ใช้ ES Modules (ESM)
import * as zlib from "node:zlib";
const input = "Hello world!";
zlib.gzip(input, (err, buffer) => {
if (!err) {
console.log("บีบอัดแล้ว:", buffer);
}
});
อธิบายทีละบรรทัด (ESM):
- นำเข้า zlib จาก 'node:zlib' ด้วย import (ES Modules)
- กำหนดข้อมูล input ที่จะบีบอัด
- ใช้ zlib.gzip เพื่อบีบอัดข้อมูลแบบ async (callback)
- ถ้าสำเร็จจะแสดง buffer ที่ถูกบีบอัด
เปรียบเทียบ CommonJS vs ESM
- CommonJS:
const zlib = require('zlib');
- ESM:
import * as zlib from 'node:zlib';
zlib.gunzip(buffer, callback)
ขยายข้อมูล gzip กลับเป็นต้นฉบับ
js
zlib.gunzip(buffer, (err, result) => {
if (!err) {
console.log("ขยายแล้ว:", result.toString());
}
});
zlib.deflate / zlib.inflate
รองรับการบีบอัด/ขยายแบบอื่น (deflate)
ตัวอย่างการใช้งานจริง
- บีบอัดไฟล์ log ก่อน backup
- ส่งข้อมูลขนาดใหญ่ผ่าน API ให้ client
- ขยายข้อมูลที่รับมาจาก network
อธิบายการทำงาน
- gzip: บีบอัดข้อมูลให้เล็กลง (นิยมใช้กับไฟล์หรือ API)
- gunzip: ขยายข้อมูลกลับเป็นต้นฉบับ
- รองรับทั้ง callback และ stream สำหรับไฟล์ใหญ่
สรุป
zlib คือเครื่องมือสำคัญสำหรับจัดการข้อมูลขนาดใหญ่ใน Node.js ถ้าเข้าใจ zlib จะสามารถบีบอัด/ขยายข้อมูลได้อย่างมืออาชีพ