Node.js คืออะไร ? + สอนวิธีใช้

หากจะพูดถึง Node.js หลายๆ คนคงจะเคยได้ยินกันมาบ้าง แต่อาจจะยังไม่ทราบว่ามันคืออะไร และมีประโยชน์อะไรกับ front-end engineer อย่างพวกเรา

Node.js คืออะไร ?

สำหรับคำถามที่ว่า Node.js คืออะไร หากจะตอบแบบสั้นๆ มันก็คือ การเขียนโปรแกรมด้วย JavaScript ที่ฝั่ง server แทนที่ปกติแล้วจะเป็นฝั่ง client แต่จริงๆ แล้ว Node.js นั้นจะรวมไปถึง environment ต่างๆ ที่ทำขึ้นเพื่อให้เราเขียน JavaScript เอาไว้ที่ฝั่ง server ได้ด้วย(webserver,  runtime และอื่นๆ) เรียกได้ว่ามันก็คือ platform นั่นเอง

แล้ว Node.js เกี่ยวอะไรกับเรา ?

เนื่องจาก Node.js นั้นขึ้นชื่อในด้านความเร็วของการประมวลผล จึงทำให้ application ที่เขียนด้วย Node.js นั้นมีจำนวนเพิ่มขึ้นอย่างรวดเร็ว ซึ่งรวมไปถึง application ที่จะช่วยให้การพัฒนาเว็บไซต์เป็นไปอย่างราบรื่นมากขึ้นด้วย โดยบทความนี้จะขอเน้นไปที่วิธีการนำ application เหล่านั้นมาใช้ให้เกิดประโยชน์ในการทำเว็บไซต์

วิธีติดตั้ง Node.js

การจะนำ application ที่เขียนด้วย Node.js มาใช้งาน เราจะต้องติดตั้ง Node.js เสียก่อน => Download

node.js download

ให้เราเลือก download แบบ installer มาก็ได้ เพราะขั้นตอนการติดตั้งจะไม่ยุ่งยากเท่าไรนัก

nodejs installation

เมื่อติดตั้งเสร็จแล้ว ให้เราเปิด Command-line Interface(Command Prompt, Terminal) ขึ้นมา แล้วลองพิมพ์คำสั่งนี้ดู

หากเลขเวอร์ชันของ Node.js แสดงขึ้นมา ก็แปลว่าเราได้ติดตั้ง Node.js เรียบร้อยแล้ว

รู้จักกับ npm

อย่างที่ได้กล่าวไปแล้วว่า เราไม่ได้จะมาเขียน application ขึ้นมาใช้เอง แต่เราจะเลือกหยิบ application ที่มีคนเขียนเอาไว้ดีแล้วมาใช้เลยต่างหาก ในขั้นตอนที่ว่านี้ เราจะทำผ่านสิ่งที่เรียกว่า “npm”

npm นั้นจะถูกติดตั้งมาพร้อมกับ Node.js เพื่อทำหน้าที่จัดการ package เสริมต่างๆ ไม่ว่าจะเป็นการติดตั้ง application หรือการติดตั้ง module ต่างๆ ที่เป็น dependency ของ application เพียงแค่เราระบุชื่อ package ที่ต้องการจะใช้ มันก็จะไปตรวจสอบชื่อ package นั้นใน registry เมื่อพบแล้ว มันก็จะดาวน์โหลด package นั้นๆ มาให้เราทันที นอกจากนั้น การนำ application ที่เราเขียนเองไปเพิ่มไว้ใน registry ของ npm ก็สามารถทำผ่าน npm ได้เช่นกัน

สำหรับวิธีใช้ npm นั้นก็ไม่มีอะไรยากเลย เพียงแค่เราเปิด Command-line Interface ขึ้นมา แล้วเข้าไปยัง path ที่ต้องการจะติดตั้ง(ที่อยู่ของ project เรา) จากนั้นให้พิมพ์คำสั่งนี้

เพียงเท่านี้ package ที่เราระบุก็จะถูกติดตั้งเรียบร้อยแล้ว

แล้วเราจะหา package ได้จากไหน ?

ให้เราลองเข้าไปดู package ที่น่าสนใจได้จาก official website ของ npm ได้เลย ที่ npmjs.org โดยทางเว็บไซต์จะมีหน้าจัดอันดับ package ที่มียอดดาวน์โหลดสูงสุดเอาไว้ด้วย ทำให้เรารู้ว่าในขณะนี้ คนกำลังนิยมใช้ package อะไรกันอยู่บ้าง

สำหรับวิธีใช้งานของแต่ละแพคเกจนั้นจะแตกต่างกันออกไป โดยเราสามารถอ่านวิธีใช้งานพื้นฐานของ package นั้นๆ ได้ที่หน้ารายละเอียดของ package ที่ทาง npmjs.org ได้จัดทำไว้ แต่ถ้ายังไม่ละเอียดพอ เราก็สามารถเข้าไปอ่านคู่มือการใช้งานได้ที่เว็บไซต์หลักของ package นั้นๆ

แนะนำ package สำหรับ Front-end Engineer

  • bowerเป็น package manager ที่สร้างโดย Twitter เอาไว้สำหรับติดตั้ง/อัพเดท 3rd-party ต่างๆ(เช่นพวก jQuery plugin) ได้ในการรันคำสั่งเพียงครั้งเดียว ทำให้เราไม่ต้องไปเข้าทีละเว็บแล้วดาวน์โหลดมาอีกต่อไป
  • gulpเอาไว้รัน task ต่างๆ เพื่อที่จะได้ไม่ต้องมาทำเองอีกต่อไป เราสามารถสั่งให้คอมไพล์ไฟล์ Sass ในทันทีที่มีการแก้ไข หรือแม้แต่สั่งให้รีเฟรช Web Browser ทุกครั้งที่มีการแก้ไข HTML เป็นต้น

เมื่อเราได้ลองใช้ทั้ง bower และ gulp แล้ว ก็จะเห็นว่า Node.js นั้น ช่วยเราได้มากเลยจริงๆ หากเราศึกษา Node.js ในระดับที่ลึกขึ้นไปอีก เราก็จะพบว่า Node.js นี่มันสามารถนำไปใช้สร้างเว็บไซต์ทั้งเว็บขึ้นมาได้เลย แต่ถ้าใครลองศึกษาแล้วยังไม่ค่อยเข้าใจ หรือคิดว่าไม่ใช่ทาง เราอาจจะไม่ต้องไปถึงขั้นที่สามารถเขียน app ของ Node.js ขึ้นมาใช้เองก็ได้ ขอแค่เรารู้วิธีนำ package ต่างๆ ที่คนอื่นเค้าเขียนเอาไว้ดีแล้ว มาใช้ให้เกิดประโยชน์กับงานของเราก็ถือว่าโอเคแล้ว

(Visited 85,538 times, 48 visits today)

23 Responses to “Node.js คืออะไร ? + สอนวิธีใช้”

  1. ดีมากๆเลยครับ

  2. Oh's สวัสดี says:

    บทความที่ดีมากครับ .. มีแหล่งข้อมูลมากกว่านี้แนะนำบ้างนะครับ ^^

  3. ขอบคุณมากครับ ผมยอมรับว่าบทความนี้ ผมได้ตัดเนื้อหาในหลายๆ ส่วนออก เนื่องจากต้องการจะให้ผู้อ่านเข้าใจถึงภาพรวมๆ ของ Node.js ให้ได้ก่อน หลังจากนั้น หากเราต้องการจะศึกษาในระดับที่ลึกขึ้น เราก็ค่อยหาอ่านเฉพาะด้านนั้นๆ ได้ครับ
    แอดมินขอแนะนำให้อ่าน Node.js Tutorial จากเว็บนี้ดูครับ เข้าใจไม่ยากเลย ^_^
    https://www.codeschool.com/courses/real-time-web-with-node-js

  4. Oh's สวัสดี says:

    Siam HTML – สังคมของนักพัฒนาเว็บไซต์ในไทย ขอบคุณมากเลยครับ .. จะคอยติดตามบทความดีๆ แบบนี้อีกนะครับ

  5. ของเตียงมากๆ ครัส

  6. อ่านเข้าใจง่ายมากๆคับ อ่านมาหลายเว็บแล้ว บอกเลยว่า งง

  7. ถ้าเขียนโค๊ดด้วย node.js สามารถไปขึ้นโฮสจริงๆได้เลยมั๊ยครับ แล้วมันจะทำงานยังไงครับ เพราะเห็นว่าเวลาเรา dev มันต้องส่งให้รันด้วย commandline ก่อนถึงจะทำงานอ่ะครับ ขอบคุณครับ

  8. ขึ้นได้เลยครับ เพียงแต่ server นั้นจะต้องติดตั้ง node.js เอาไว้ด้วย (ซึ่งในไทยมีไม่มากนัก) วิธีการก็เหมือนกับที่เราทำใน localhost เป๊ะๆ เลยครับ คือต้อง start app ด้วย command-line แล้วหา tool อย่าง PM2 มา monitor เอาครับ

  9. พอจะแนะนำผู้ให้บริการโฮสติ้งในไทยสำหรับการเขียนเว็บไซต์ด้วยภาษา node.js ได้หรือเปล่าครับ

  10. เยี่ยมเลยครับ ตอนแรกยังงงๆอยู่ ตอนนี้เริ่มเห็นแล้วว่าจะเริ่มอะไรตรงไหนยังไง ขอบคุณครับ

  11. ขอบคุณมากครับ

  12. Node.js ต่างกับ AngularJS ยังไงครับ ที่ผมเข้าใจ Node จะทำงานฝั่ง server ส่วน Angular จะทำงานฝั่ง client ใช่หรือป่าวครับ ผมกำลังศ฿กษา js นะ ไม่ค่อยทราบเท่าไร

  13. ผมขออธิบายให้เห็นภาพง่ายๆ อย่างนี้ละกันครับ

    Node.js = Web server + JS Compiler
    ซึ่ง 2 อย่างนี้ ทำให้เราสามารถใช้ JS เป็นภาษาฝั่ง server ได้ครับ
    (เดิม JS เป็นภาษาฝั่ง client การที่เขียน JS ที่ฝั่ง server ได้ด้วย มีข้อดีคือทำให้เราใช้ภาษาเดียวกัน ทั้ง 2 ฝั่ง)

    ส่วน AngularJS = framework สำหรับการเขียน JS ที่ฝั่ง client

    หากเราใช้ 2 อย่างนี้ร่วมกัน เรามักจะใช้ Node.js ทำ API
    แล้วใช้ AngularJS เรียกใช้ API นั้น นำข้อมูลมาแสดงครับผม

  14. ตอนนี้ กำลังลองเขียน ionic อยู่ ตอนแรก คิดว่า จะใช้ Angular ทำ frontend แล้ว php ทำ backend สรุปแล้ว เราสามารถ ใช้ nodeJs แทน php ไช่ไหมมม

  15. Good morning Folks !!! nice to see a nodejs active community in Thailand. At Purple Voice we are recruiting young talent and nodejs coder are really wanted :-) Have a look

  16. ใช้ได้ครับผม

  17. สามารถใช้แทน Java หรือ .NET MVC (C#) ได้ใหมครับ

  18. สามารถใช้ Node.js เป็นภาษาฝั่ง server ได้ครับ คือมันทำได้เหมือนกับที่ภาษาฝั่ง server ทั่วไปทำได้เลยอะครับ

  19. Ben Apinat says:

    ผมสามารถบอกได้ไหมว่า Node JS เป็น ไม่ใช่ javascript framework แต่เปรียบเสมือนตัวที่เอาไว้ Runtime และเป็น server ถูกต้องไหมคับ?

  20. ถูกต้องนะค้าบบบบบ!

  21. Melody Mew says:

    ขอบคุณมาก สำหรับความรู้ค่ะ

  22. ผมเริ่มเห็นภาพลางๆ (แต่อธิบายดีครับ)

Leave a Reply to Suphamongkhon Arwatchanakarn