Node js : Hello world ง่ายๆ ทำไมต้องเขียนบล็อก

มามะ หลังจากที่เราได้พูดคร่าวๆเกี่ยวกับ Node js ไปแล้วในบทความที่แล้ว คราวนี้มาลองดูกันสิ๊เจ้า Node js เราจะเล่นกับมันยังไง

ต้องใช้ท่าไหน ต้องหมุนตัวกลับหลังหันเลยมั้ย ถึงจะใช้มันได้

มาลองกันที่คำสั่งง่ายๆที่ทุกคนเวลาเริ่มเขียนโปรแกรมไม่ว่าจะภาษาไหน ต้องลองเขียน “Hello world”

ให้ลองสร้างไฟล์ขึ้นมาไฟล์หนึ่ง ให้ชื่ออะไรก็ได้ นามสกุล .js

ในตัวอย่างผมจะทำการสร้างไฟล์ชื่อ hello_world.js

จากนั้นลองเอา code นี้ไปแปะดูครับ

console.log('hello world');

Hello World

วิธีรัน Nodejs ก็ใช้วิธีเดียวกับครั้งที่แล้วเลย คือ node (filename)

node hello_world.js

show hello world

ปิ๊งงงง ออกมาแล้ว hello world

แต่ถ้าใครเคยเขียน javascriptจะรู้ทันทีว่าไอ้คำสั่ง console.log(); มันคือคำสั่งของ javascript นิหว่าาา  อย่างที่เคยเล่าให้ฟัง node js ก็คือลูกหลานของ javascript นั้นเอง

ถ้า hello world บรรทัดเดียวมันจะง่ายไป มาลองหลายๆบรรทัด

Hello world 3 times

แล้วมาลองดูผลลัพธ์กันสิ๊

ก็ยัง Ok นะ สั่งให้แสดง hello world , hello world2 , hello world 3 ก็เรียงตามลำดับดีนิ

แต่ถ้าเราลองเป็นแบบนี้ละ

hello world and settimeout

บรรทัด

ยังไม่อธิบายละเอียดเนาะ แต่ให้เข้าใจว่า มันคือการให้หน่วยเวลาไว้ 200ms แล้วให้ทำคำสั่ง console.log(‘hello world2’);

ฉะนั้นผลลัพธ์จะได้อะไร???

ทุกคนพร้อมใจกันตอบแน่ๆว่ามันเหมือนเดิม แค่จะแสดงผลช้าลง 200ms ถูกมั้ยครับ เพราะจะโดนบรรทัด hello world2 หน่วงไว้

แต่ผิด!! ..!!

Hello world with setTimeout

เอ้าาาาา ทำไม Hello world3 , Hello world4 ดันขึ้นมาก่อนละ ??

ยังจำได้มั้ย? บทความก่อนหน้า Node js : Say hi what is it ?

การทำงานของ node js คือ non-Blocking I/O ฉะนั้นมันจะหา way หรือ คำสั่งไหนที่ทำงานได้เร็วขึ้นมาทำก่อน แทนที่จะต้องรอ มันจะข้าม จุดที่ต้องรอไป

หรือจริงๆแล้วแนวคิดของ non-Blocking I/O คือการเรียกไปแล้วไม่รอการตอบกลับ แต่จะข้ามไปทำงานอื่นก่อน เมื่อมันต้องกลับมาถึงจะทำ

จะเห็นว่าเราสั่งหน่วงเวลาไว้ 200ms node js มันรู้สึกว่าถ้าทำบรรทัดนี้จะทำให้โปรแกรมช้าลงนะ งั้นข้ามไปทำบรรทัดอื่นก่อนดีกว่า

แล้วค่อยกลับมาทำบรรทัดนี้  . . และนี้เป็นเหตุผลว่าทำไม node js ถึงทำได้ทำงานได้รวดเร็ว แต่ก็เป็นอีกเหตุผลว่าหลายคนบอกว่ามันยากกก

เพราะการที่เราจะคุมให้มันทำงานตาม step 1 , 2 ,3 มันอาจจะไม่ใช่ธรรมชาติของ node js สักทีเดียว  แต่มันย่อมมีวิธีในการทำได้

 

 

สรุป 

  • Hello world ง่ายๆ บรรทัดเดียวจบ
  • หากเคยเขียนภาษาอื่นมา ที่ทำงานเรียงจากบรรทัดบนลงล่าง ให้เปลี่ยนความคิดได้เลย node js อาจจะหยิบบรรทัดล่างสุดมาทำก่อนก็ได้

 

 

ขอบคุณครับ

ผิดพลาดประการใดขออภัย

iMa8.

Leave a Reply