ตอนที่แล้ว เราได้ทดลองสร้าง Web Server แบบ Static Web Page แบบมีหน้าเดียวกันไปแล้ว ตอนนี้มาลองสร้างแบบมีหลายๆ กัน การสร้าง Web Server ให้สามารถส่งผลกลับไปให้ผู้ใช้แบบมีหลายๆ หน้านั่น จะต้องรู้ว่าผู้ใช้เรียกเข้ามาผ่าน URL เป็นอะไร เพื่อที่ Web Server จะได้ส่งหน้าที่ต้องการกลับไปได้ถูกต้อง ตัวอย่างดังภาพด้านล่าง ที่มีหน้า home.html และ about.html ที่เข้าผ่าน URL ที่ต่างกัน
Node.js จึงมี Modules สำหรับจัดการกับ URL ที่ถูกเรียกเข้ามาชื่อว่า url วิธีการใช้งาน ให้นำเข้า Module - url เข้ามาใช้ด้วยคำสั่ง require เสียก่อน ต่อมาอ่าน pathname จาก URL ที่ได้เพื่ออ่านไฟล์ให้ตรงกับ URL ที่เรียกเข้ามา
ถ้าเรียกเข้ามาเป็น http://localhost:8081/home.html ให้อ่านไฟล์ home.html แล้วส่งกลับไป
เช่าเดียวกันถ้าเรียก http://localhost:8081/about.html ให้อ่านไฟล์ about.html
var http = require('http');
var url = require('url'); // นำเข้า url มาใช้งาน
var fs = require('fs');
http.createServer(function (req, res) {
var q = url.parse(req.url, true); // ดึงข้อมูล URL มาจาก req.url
var filename = "." + q.pathname; // pathname จะเก็บค่าที่อยู่หลัง http://localhost:8081/
fs.readFile(filename, function (err, data) { // นำค่า pathname ที่ได้มาอ่านไฟล์
if (err) { // อ่านไม่ได้ลงกลับเป็น 404 Not Found
res.writeHead(404, { 'Content-Type': 'text/html' });
return res.end("404 Not Found");
}
res.writeHead(200, { 'Content-Type': 'text/html' });
res.write(data); // ส่งข้อมูลทีอ่านได้กลับไปให้ผู้ใช้
return res.end();
});
}).listen(8081);
console.log("Server running at http://127.0.0.1:8081/");
เท่านี้เราก็สามารถสร้าง Web Server แบบ Static Web Page ที่มีหลายๆ หน้ากันได้แล้วครับ แต่จะพบว่าการเขียนสร้าง Web Server เองทั้งหมดมีความซับซ้อน จึงมีนักพัฒนาสร้าง Web Framework สำหรับ Node.js เพื่อให้เขียนจัดการ Web Server ง่ายขึ้น ชื่อว่า ExpressJS ซึ่งเป็นที่นิยมมาก ใครสนใจกดดูได้ในตอนต่อไปได้เลย