การแสดงผลออกทางหน้าจอ บน Node.js

การแสดงผล (Output) นั้นเป็นส่วนหนึ่งของการทำงานพื้นฐานของโปรแกรม โดยปกติแล้วโปรแกรมมักจะตอบสนองกับผู้ใช้ผ่านการรับค่าและการแสดงผล การแสดงผลหมายถึงการแสดงข้อความหรือผลลัพธ์การทำงานของโปรแกรมผ่านทางหน้าจอ (Terminal หรือ Console) ในบทนี้คุณจะได้เรียนรู้เกี่ยวกับการแสดงผลบน Node.js

  • การแสดงผลด้วยฟังก์ชัน console.log
  • การแสดงผลด้วย process.stdout
  • console.error และ process.stderr

การแสดงผลด้วยฟังก์ชัน console.log

เมื่อต้องการแสดงผลบางอย่างออกทางหน้าจอบน Node.js เราใช้ฟังก์ชัน console.log โดยฟังก์ชันนี้เป็นฟังก์ชันของภาษา JavaScript สำหรับแสดงผลข้อมูลออกทางหน้าจอ และ Node.js ใช้มันเพื่อส่งข้อมูลไปยัง Standard output ซึ่งเป็นจอภาพเพื่อแสดงโดยตรง

ฟังก์ชัน console.log สามารถใช้สำหรับแสดงข้อมูลทุกประเภทในภาษา JavaScript ออบเจ็คที่ส่งเข้าไปยังฟังก์ชันจะถูกแปลงเป็น String ก่อนการแสดงผลเพื่อส่งออกไปยัง Output stream นี่เป็นตัวอย่างการใช้ฟังก์ชัน console.log สำหรับแสดงข้อมูลออกทางหน้าจอบน Node.js

console.log('marcuscode');
console.log(2021);
console.log({ id: 1, name: 'Metin' });

นี่เป็นผลลัพธ์การทำงานของโปรแกรม

marcuscode
2021
{ id: 1, name: 'Metin' }

ในตัวอย่างนี้ เราใช้ฟังก์ชัน console.log สำหรับแสดงข้อมูลสามประเภทออกทางหน้าจอ ได้แก่ String ตัวเลข และออบเจ็ค สังเกตว่าหลังจากการแสดงผลแต่ครั้ง ฟังก์ชัน console.log จะทำการขึ้นบรรทัดใหม่ด้วยเสมอ นี่เป็นวิธีการทำงานพื้นฐานของมัน

นอกจากนี้ คุณสามารถส่งหลายพารามิเตอร์เข้าไปยังฟังก์ชันได้ ถ้าหากทำเช่นนี้ แต่ละพารามิเตอร์จะถูกแสดงผลโดยคั่นด้วยช่องว่าง ซึ่งนี่มีประโยชน์เมื่อคุณต้องการแสดงหลายค่าในคำสั่งเดียว และไม่ต้องการให้ข้อความขึ้นบรรทัดใหม่

console.log('One', 'Two', 'Three');
console.log('I have', 3, 'Apples');

นี่เป็นผลลัพธ์การทำงานของโปรแกรม

One Two Three
I have 3 Apples

การแสดงผลด้วย process.stdout

นอกจากการแสดงผลด้วยฟังก์ชัน console.log แล้ว บน Node.js เรายังสามารถแสดงผลโยการใช้ออบเจ็ค process.stdout ได้ นี่เป็นการส่งข้อมูลไปแสดงยัง Standard output โดยตรง ในการใช้งานวิธีนี้ คุณจะต้องควบคุมข้อมูลสำหรับการแสดงผลด้วยตัวเอง นี่เป็นตัวอย่าง

process.stdout.write("Hello");
process.stdout.write("Node.js");

นี่เป็นผลลัพธ์การทำงานของโปรแกรม

HelloNode.js

ออบเจ็ค stdout เป็นออบเจ็คที่สร้างมาจากอินเตอร์เฟซ WritableStream ที่เชื่อมต่อกับหน้าจอแสดงผลโดยตรง ในการส่งข้อมูลออกไปสำหรับการแสดงผลเราเรียกใช้เมธอด write บนออบเจ็ค โดยการส่ง String หรือ Buffer เป็นพารามิเตอร์ของเมธอด

สังเกตว่าในการใช้เมธอด write ในการแสดงผลจะไม่มีการขึ้นบรรทัดใหม่ เพื่อที่จะให้มีการขึ้นบรรทัดใหม่คุณจะต้องทำมันด้วยตัวเอง โดยการใช้ "\n" ภายใน String ดังตัวอย่างต่อไปนี้

process.stdout.write("Hello\n");
process.stdout.write("Node.js");

นี่เป็นผลลัพธ์การทำงานของโปรแกรม

Hello
Node.js

เพื่อทำให้การแสดงผลของโปรแกรมขึ้นบรรทัดใหม่หลังจาก Hello โดย "\n" นั้นเป็นตัวอักษรพิเศษหรือ Escape charecter ที่แสดงถึงการขึ้นบรรทัดใหม่ในภาษา JavaScript

นอกจากนี้ เมธอด stdout.write ยังสามารถรับพารามิเตอร์เป็น Uint8Array หรือออบเจ็คที่ถูกสร้างมาจากคลาส Buffer ได้ ในตัวอย่างต่อไปนี้ เราส่ง Buffer เป็นพารามิเตอร์ของเมธอดสำหรับการแสดงผล

let buffer = new Uint8Array([77, 101, 116, 105, 110]);
process.stdout.write(buffer);

นี่เป็นผลลัพธ์การทำงานของโปรแกรม

Metin

เราสร้างอาเรย์ของ Buffer จากคลาส Uint8Array โดยกำหนดค่าเป็นอาเรย์ของตัวเลขจำนวนเต็มที่แสดงถึงข้อความ "Metin" โดยหนึ่งตัวเลขคือหนึ่งตัวอักษร จากนั้นเราแสดงข้อมูลนี้ออกทางหน้าจอด้วยเมธอด write ซึ่งข้อมูลจะถูกแปลงเป็นตัวอักษรที่สอดคล้องกับรหัสของ ASCII Code ของข้อมูลเสมอ

ข้อควรระวัง: เมธอด stdout.write จะรับพารามิเตอร์เป็น String หรือ Buffer เท่านั้น ถ้าหากคุณส่งประเภทข้อมูลอื่น เช่น ตัวเลข หรือออบเจ็ค นั่นจะทำให้เกิดข้อผิดพลาดขึ้น เนื่องจากมันเป็นประเภทข้อมูลที่ไม่สนับสนุนโดยเมธอด

console.error และ process.stderr

ในการแสดงผลยังมีอีกฟังก์ชันหนึ่งที่ถูกใช้งานบ่อยๆ นั่นคือฟังก์ชัน console.error มันใช้สำหรับแสดงผลที่เป็นข้อผิดพลาดของโปรแกรม นี่จะช่วยให้เราสามารถแยกการแสดงผลออกจากการแสดงผลปกติได้ และเราสามารถตั้งค่าให้แสดงผลนี้เขียนลงบนไฟล์ Error logs สำหรับการตรวจสอบข้อผิดพลาดที่เกิดขึ้น

นี่เป็นตัวอย่างของการใช้ฟังก์ชัน console.error สำหรับแสดงข้อความที่มีความหมายว่าเป็นข้อผิดพลาดในโปรแกรม

console.error("This is an error.");

นี่เป็นผลลัพธ์การทำงานของโปรแกรมบน Console

This is an error.

การแสดงผลจะเหมือนกับฟังก์ชัน console.log เว้นแต่ว่าในบางสภาพแว้ดล้อมการทำงาน เช่น เว็บบราวน์เซอร์ หรือ Console ที่ใช้รันโปรแกรม การแสดงผลของข้อความอาจเป็นสีแดง นี่จะช่วยในการแยกแยะระหว่างการแสดงผลปกติ และการแสดงผลที่เป็นข้อผิดพลาดของโปรแกรมได้ง่ายขึ้น

ฟังก์ชัน console.error ส่งข้อมูลสำหรับไปส่งผลโดยตรงที่ Standard error หรือออบเจ็ค process.stderr นั่นหมายความว่าในตัวอย่างก่อนหน้า คุณสามารถเขียนแบบนี้เพื่อให้ได้ผลลัพธ์เช่นเดียวกัน

process.stderr.write("This is an error.\n");

ในบทนี้ คุณได้เรียนรู้เกี่ยวกับการแสดงผลบน Node.js เราได้พูดถึงฟังก์ชันสำหรับการแสดงผลแบบปกติโดยฟังก์ชัน console.log และการแสดงผลในกรณีที่โปรแกรมเกิดข้อผิดพลาดโดยการใช้ฟังก์ชัน console.error