Node.js Standard Modules
ในบทนี้ คุณจะได้ทำความรู้จักกับโมดูลหรือไลบรารีมาตรฐานบน Node.js ซึ่งโมดูลเหล่านี่เป็น API ระดับต่ำสำหรับอำนวยความสะดวกในการติดต่อกับ Input/Output และเข้าถึงทรัพยากรและข้อมูลบนระบบปฏิบัติการและอื่นๆ นี่เป็นเนื้อหาในบทนี้
- Module มาตรฐานบน Node.js
- fs module
- path module
- os module
- events module
- http module
Module มาตรฐานบน Node.js
Node.js มีโมดูลมาตรฐานสำหรับใช้เพื่อติดต่อกับ Interfaces ต่างๆ ของระบบปฏิบัติการได้ โมดูลเหล่านี้เฉพาะเจาะจงสำหรับแต่ละงานที่คุณต้องการทำบน Node.js นั่นหมายความว่าไม่ใช่ทุกโปรแกรมที่ต้องการใช้มัน ยกตัวอย่างเช่น หากคุณเขียนโปรแกรมเพื่ออ่านและเขียนไฟล์ คุณอาจต้องการใช้โมดูล fs
ในขณะที่เมื่อต้องการสร้างเว็บเซิร์ฟเวอร์ คุณจะต้องใช้โมดูล http
แทน เป็นต้น
ในบทเรียนนี้ เราจะไม่ได้พูดถึงการใช้งานแบบละเอียดของโมดูล แต่จะอธิบายว่าแต่ละโมดูลคืออะไร มีวัตถุประสงค์เพื่ออะไร หรือกล่าวอีกนัยหนึ่ง เป็นการแนะนำให้คุณรู้จักกับมันเอาไว้เพื่อในอนาคตคุณอาจต้องใช้ในโปรเจ็คของคุณนั่นเอง นี่เป็นโมดูลที่เราจะพูดถึง
- fs: โมดูลสำหรับทำงานเกี่ยวกับไฟล์
- path: โมดูลสำหรับทำงานกับพาธของไฟล์และโฟล์เดอร์
- os: โมดูลสำหรับอ่านข้อมูลทรัพยากรของระบบปฏิบัติการ
- events: โมดูลสำหรับทำงานกับ Event บน Node.js
- http: โมดูลสำหรับสร้างเว็บเซิร์ฟเวอร์ผ่านทางโปรโตคอล HTTP
fs module
โมดูล fs นั้นเป็นโมดูลสำหรับทำงานกับไฟล์ มันประกอบไปด้วยฟังชันสำหรับทำงานกับไฟล์ระบบในรูปแบบต่างๆ เช่น การอ่านไฟล์ การเขียนไฟล์ การลบไฟล์ หรือการจัดการสิทธิบนไฟล์ เป็นต้น เพื่อใช้งานโมดูลคุณเพียงแค่นำเข้ามันด้วยคำสั่ง
const fs = require('fs');
จากนั้นคุณสามารถเข้าถึงฟังก์ชันทั้งหมดผ่านทางออบเจ็ค fs
นี่เป็นตัวอย่างสำหรับเขียนข้อมูลลงบนไฟล์ myfile.txt
โดยการใช้ฟังก์ชัน writeFile
จากโมดูล fs
const fs = require('fs');
const content = 'Hello World!';
fs.writeFile('./myfile.txt', content, (err) => {
if (err) {
console.error(err)
return
}
console.log('File written successfully.');
});
path module
โมดูล path นั้นประกอบไปด้วยฟังก์ชันสำหรับทำงานและจัดการกับพาธ ยกตัวอย่างเช่น รับเอาชื่อไฟล์จากพาธ หรือรับเอาโฟล์เดอร์จากพาธ และเมธอดอื่นๆ ที่ช่วยให้เราทำงานกับพาธได้ง่ายขึ้น เพิื่อใช้งานมัน คุณนำเข้าโมดูลด้วยคำสั่งต่อไปนี้
const path = require('path');
ยกตัวอย่างเช่น ฟังก์ชัน basename
ใช้สำหรับรับเอาชื่อไฟล์จากไฟล์ ในขณะที่ฟังก์ชัน dirname
รับเอาชื่อโฟล์เดอร์จากพาธดังกล่าว
const path = require('path');
path.basename('/test/myfile.txt'); // myfile
path.dirname('/test/myfile.txt'); // test
os module
โมดูล os มีค่าคงที่และฟังก์ชันสำหรับใช้เพื่อรับเอาข้อมูลและการทำงานเกี่ยวกับระบบปฏิบัติการที่ Node.js กำลังทำงานอยู่ เช่น ชื่อของระบบปฏิบัติการ ข้อมูลและการทำงานของ CPU หน่วยความจำของระบบ นี่จะมีประโยชน์เมื่อคุณต้องการนำข้อมูลเหล่านี้มาใช้ในโปรแกรม ในตัวอย่างนี้ เป็นการรับเอาประเภทของระบบปฏิบัติการและสถาปัตยกรรมของมัน
const os = require('os');
console.log(os.type());
console.log(os.arch());
นี่เป็นผลลัพธ์การทำงานของโปรแกรม
Windows_NT
x64
ซึ่งเป็นผลลัพธ์จากการรันโปรแกรมบนระบบปฏิบัติการบน Windows 8.1 สถาปัตยกรรมแบบ 64 Bits
events module
โมดูล Events เป็นโมดูลหลักที่ Node.js ใช้เป็นตัวรับและส่ง Event ในระบบของมัน โมดูลนี้ประกอบไปด้วยคลาส EventEmitter
ที่ใช้สำหรับส่งและรับ Event บน Node.js แนวคิดนี้เหมือนกับการใช้งาน Event บนเว็บเบราว์เซอร์โดยที่ผู้ใช้งานจะเป็นผู้ส่ง Event โดยการมีปฏิสัมพันธ์กับหน้าเว็บเพจ เช่น การคลิกเมาส์ การกดคีย์บอร์ด การส่งฟอร์ม เป็นต้น
นี่เป็นตัวอย่างของการส่งและรับ Event อย่างง่ายบน Node.js
const EventEmitter = require('events');
const eventEmitter = new EventEmitter();
eventEmitter.on('start', () => {
console.log('Handing start event');
});
eventEmitter.emit('start');
นี่เป็นผลลัพธ์การทำงานของโปรแกรม
Handing start event
ตัวอย่างนี้แสดงการส่งและรับ Event บน Node.js โดยการใช้คลาส EventEmitter
จากโมดูล events
เพื่อเริ่มต้นใช้งานเราสร้างออบเจ็คใหม่จากคลาสนี้
eventEmitter.on('start', () => {
console.log('Handing start event');
});
เมธอด on
ใช้กำหนดฟังก์ชันเพื่อให้ทำงานเมื่อ Event เกิดขึ้น โดยการกำหนดพารามิเตอร์แรกเป็นชื่อของ Event ในกรณีนี้คือ start
และฟังก์ชัน Callback ที่จะทำงานเมื่อเกิด Event ขึ้นในพารามิเตอร์ที่สอง
eventEmitter.emit('start');
ส่วนการส่ง Event นั้นจะใช้เมธอด emit
โดยระบุพารามิเตอร์เป็นชื่อของ Event ที่ต้องการส่ง ที่จะทำให้ฟังก์ชัน Callback ที่กำหนดโดยเมธอด on
ที่สอดคล้องกับ Event นี้ทำงาน
http module
Node.js มีโมดูลที่เราสามารถใช้สำหรับสร้าง HTTP เซิร์ฟเวอร์ นอกจากนี้ยังมีโมดูลที่คล้ายกันนั่นคือโมดูล https
สำหรับสร้าง HTTPS เว็บเซิร์ฟเวอร์ นี่เป็นตัวอย่างของเว็บเซิร์ฟเวอร์อย่างง่ายที่เราสามารถสร้างได้บน Node.js
const http = require('http');
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/html');
res.end('<h1>Hello, World!</h1>');
})
server.listen(port, () => {
console.log(`Server running at port ${port}`);
});
จากนั้นให้คุณลองรันโปรแกรมนี้และเปิดเว็บเบราว์เซอร์และไปที่ http://localhost:3000/ จะปรากฏหน้าเว็บแพจแสดงข้อความ "Hello World!" ซึ่งนี่เป็นเว็บไซต์จริงๆ ที่เราเพิ่งจะสร้างมันด้วย Node.js คุณสามารถเริิ่มต้นจากจุดนี้เพื่อสร้างเว็บแอพพลิเคชันที่ซับซ้อนได้
ในบทนี้ เราได้แนะนำให้คุณรู้จักกับโมดูลมาตรฐานบน Node.js โมดูลเหล่านี้เป็นโมดูลที่มากับ Node.js ที่สามารถนำเข้ามาใช้งานได้ทันที และเราได้พูดถึงภาพรวมของโมดูลเท่านั้น สำหรับการใช้งานแต่ละโมดูลอย่างละเอียดในกรณีที่คุณต้องการมันจะพูดถึงในบทต่อไป