บทช่วยสอน Node.js สำหรับผู้เริ่มต้น: เรียนรู้ทีละขั้นตอนใน 3 วัน

ข้อมูลเบื้องต้นเกี่ยวกับ Node.js

เว็บแอปพลิเคชันสมัยใหม่ได้รับการพัฒนาอย่างมากในช่วงหลายปีที่ผ่านมาด้วยการเปิดตัวเฟรมเวิร์กยอดนิยมมากมาย เช่น bootstrap, Angular JS เป็นต้น เฟรมเวิร์กทั้งหมดนี้อิงจากความนิยม Javaต้นฉบับ กรอบ.

แต่เมื่อพูดถึงการพัฒนาแอปพลิเคชันบนเซิร์ฟเวอร์ ก็มีความว่างเปล่าอยู่บ้าง และนี่คือจุดที่ Node.js เข้ามามีบทบาท

Node.js ยังขึ้นอยู่กับ Javaเฟรมเวิร์กสคริปต์ แต่ใช้สำหรับพัฒนาแอปพลิเคชันบนเซิร์ฟเวอร์ ในขณะที่อ่านบทช่วยสอนทั้งหมด เราจะดู Node.js อย่างละเอียด และวิธีใช้เพื่อพัฒนาแอปพลิเคชันบนเซิร์ฟเวอร์

หลักสูตร Node.js

ข้อมูลพื้นฐานเกี่ยวกับ Node.js สำหรับผู้เริ่มต้น

👍 Lessเมื่อ 1 ดาวน์โหลดและติดตั้ง Node.js — วิธีดาวน์โหลดและติดตั้ง Node.js และ NPM บนหน้าต่าง
👍 Lessเมื่อ 2 บทช่วยสอน NPM ของ Node.js — สร้าง เผยแพร่ ขยาย และจัดการ
👍 Lessเมื่อ 3 สร้างเว็บเซิร์ฟเวอร์ HTTP ใน Node.js — บทช่วยสอนพร้อมตัวอย่างโค้ด

Node.js สิ่งขั้นสูง!

👍 Lessเมื่อ 1 บทช่วยสอนกรอบงานด่วนของ Node.js — เรียนรู้ใน 10 นาที
👍 Lessเมื่อ 2 Node.js MongoDB การกวดวิชา — คู่มือฉบับสมบูรณ์พร้อมตัวอย่าง
👍 Lessเมื่อ 3 บทช่วยสอนสัญญา Node.js - คู่มือฉบับสมบูรณ์สำหรับ Javaสัญญาบท
👍 Lessเมื่อ 4 บทช่วยสอนสัญญา Bluebird - คู่มือฉบับสมบูรณ์เกี่ยวกับคำสัญญาของ Bluebird
👍 Lessเมื่อ 5 Node.js Generators — คืออะไร Callbacks กับ Node.js Generators
👍 Lessเมื่อ 6 บทช่วยสอนสตรีมโหนด js — ไฟล์สตรีม, ไปป์
👍 Lessเมื่อ 7 บทช่วยสอนการทดสอบหน่วย Node.js กับ Jasmine — คู่มือฉบับสมบูรณ์
👍 Lessเมื่อ 8 บทช่วยสอน GraphQL — GraphQL คืออะไร เรียนรู้ด้วยตัวอย่าง

รู้ความแตกต่าง!

👍 Lessเมื่อ 1 GraphQL กับส่วนที่เหลือ — อะไรคือความแตกต่าง?
👍 Lessเมื่อ 2 Node.Js กับ AngularJS — รู้ความแตกต่าง
👍 Lessเมื่อ 3 Node.js กับ Python — อะไรคือความแตกต่าง?

คำถามสัมภาษณ์ Node.js และบทช่วยสอน PDF

👍 Lessเมื่อ 1 คำถามสัมภาษณ์ Node.js — คำถามและคำตอบสัมภาษณ์ Node.js 25 อันดับแรก
👍 Lessเมื่อ 2 PDF บทช่วยสอน Node.js — ดาวน์โหลด PDF บทช่วยสอน Node.js สำหรับผู้เริ่มต้น

Node.js คืออะไร?

Node.js เป็นสภาพแวดล้อมรันไทม์แบบโอเพ่นซอร์สข้ามแพลตฟอร์มที่ใช้สำหรับการพัฒนาแอปพลิเคชันเว็บฝั่งเซิร์ฟเวอร์ แอปพลิเคชัน Node.js ถูกเขียนขึ้น Javaสคริปต์สามารถรันได้บนระบบปฏิบัติการที่หลากหลาย

Node.js มีพื้นฐานมาจากสถาปัตยกรรมแบบอิงตามเหตุการณ์และ API อินพุต/เอาต์พุตแบบไม่บล็อกซึ่งได้รับการออกแบบเพื่อเพิ่มประสิทธิภาพปริมาณงานของแอปพลิเคชันและความสามารถในการปรับขนาดสำหรับแอปพลิเคชันเว็บแบบเรียลไทม์

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

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

เหตุใดจึงต้องใช้ Node.js

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

แต่ด้วยเว็บแอปพลิเคชัน Node.js คุณสามารถทำงานแบบเรียลไทม์และมีการสื่อสาร 2 ทางได้แล้ว สถานะยังคงอยู่ และไคลเอนต์หรือเซิร์ฟเวอร์สามารถเริ่มการสื่อสารได้

คุณสมบัติของ Node.js

มาดูคุณสมบัติหลักบางประการของ Node.js กัน

  1. IO ที่ขับเคลื่อนด้วยเหตุการณ์แบบอะซิงโครนัสช่วยจัดการคำขอพร้อมกันได้ ซึ่งนี่อาจเป็นจุดขายที่สำคัญที่สุดของ Node.js คุณสมบัตินี้หมายความว่าหาก Node ได้รับคำขอสำหรับการดำเนินการอินพุต/เอาต์พุต Node จะดำเนินการในเบื้องหลังและดำเนินการประมวลผลคำขออื่นๆ ต่อไป
    ซึ่งค่อนข้างแตกต่างจากภาษาโปรแกรมอื่นๆ ตัวอย่างง่ายๆ ของสิ่งนี้ได้รับในโค้ดด้านล่าง
var fs = require('fs'); 
          fs.readFile("Sample.txt",function(error,data)
          {
                console.log("Reading Data completed");
     });
  • ข้อมูลโค้ดด้านบนจะดูการอ่านไฟล์ชื่อ Sample.txt ในภาษาโปรแกรมอื่นๆ การประมวลผลบรรทัดถัดไปจะเกิดขึ้นก็ต่อเมื่ออ่านไฟล์ทั้งหมดแล้วเท่านั้น
  • แต่ในกรณีของ Node.js ส่วนสำคัญของโค้ดที่ควรสังเกตคือการประกาศฟังก์ชัน ('ฟังก์ชัน (ข้อผิดพลาด, ข้อมูล)') สิ่งนี้เรียกว่าฟังก์ชันการโทรกลับ
  • สิ่งที่เกิดขึ้นที่นี่คือการอ่านไฟล์จะเริ่มขึ้นในเบื้องหลัง และการประมวลผลอื่นๆ สามารถเกิดขึ้นพร้อมกันได้ในขณะที่กำลังอ่านไฟล์ เมื่อการอ่านไฟล์เสร็จสิ้น ฟังก์ชันนิรนามนี้จะถูกเรียกใช้ และข้อความ "Reading Data completed" จะถูกเขียนลงในบันทึกของคอนโซล
  1. โหนดใช้ V8 JavaScript Runtime engine ซึ่งเป็นเครื่องมือที่ใช้โดย Google Chrome- โหนดมีกระดาษห่อหุ้มอยู่ Javaกลไกสคริปต์ที่ทำให้กลไกรันไทม์เร็วขึ้นมาก และทำให้การประมวลผลคำขอภายใน Node เร็วขึ้นด้วยเช่นกัน
  2. การจัดการคำขอที่เกิดขึ้นพร้อมกัน – ฟังก์ชันหลักอีกประการหนึ่งของโหนดคือความสามารถในการจัดการการเชื่อมต่อที่เกิดขึ้นพร้อมกันโดยมีค่าใช้จ่ายน้อยที่สุดในกระบวนการเดียว
  3. ไลบรารี Node.js ใช้ Javaสคริปต์ – นี่เป็นอีกแง่มุมที่สำคัญของการพัฒนาใน Node.js ชุมชนนักพัฒนาส่วนใหญ่มีความรู้ด้าน JavaScript เป็นอย่างดี ดังนั้นการพัฒนาใน Node.js จึงง่ายขึ้นสำหรับนักพัฒนาที่มีความรู้ด้าน JavaScript
  4. มีชุมชนที่กระตือรือร้นและมีชีวิตชีวาสำหรับเฟรมเวิร์ก Node.js เนื่องจากชุมชนที่กระตือรือร้น จึงมีการอัปเดตคีย์สำหรับเฟรมเวิร์กอยู่เสมอ ซึ่งช่วยให้เฟรมเวิร์กได้รับการอัปเดตตามเทรนด์ล่าสุดในการพัฒนาเว็บอยู่เสมอ

ใครใช้ Node.js

Node.js ถูกใช้โดยบริษัทขนาดใหญ่หลายแห่ง ด้านล่างเป็นรายการบางส่วนของพวกเขา

  • Paypal – เว็บไซต์จำนวนมากใน Paypal ก็เริ่มเปลี่ยนไปใช้ Node.js เช่นกัน
  • LinkedIn – LinkedIn กำลังใช้ Node.js เพื่อเพิ่มประสิทธิภาพ โทรศัพท์มือถือ เซิร์ฟเวอร์ที่ขับเคลื่อน iPhone Androidและผลิตภัณฑ์เว็บบนมือถือ
  • Mozilla ได้นำ Node.js มาใช้เพื่อรองรับ API ของเบราว์เซอร์ซึ่งมีการติดตั้งไปแล้วกว่า 500 ล้านครั้ง
  • eBay โฮสต์บริการ HTTP API ใน Node.js

เมื่อใดจึงควรใช้ Node.js

Node.js เหมาะที่สุดสำหรับการใช้งานในการสตรีมหรือแอปพลิเคชันเรียลไทม์ตามเหตุการณ์เช่น

  1. แอปแชท
  2. เซิร์ฟเวอร์เกม – เซิร์ฟเวอร์ที่รวดเร็วและมีประสิทธิภาพสูงซึ่งจำเป็นต้องประมวลผลคำขอหลายพันรายการในแต่ละครั้ง นี่คือเฟรมเวิร์กในอุดมคติ
  3. สภาพแวดล้อมที่ดีสำหรับการทำงานร่วมกัน - เหมาะสำหรับสภาพแวดล้อมที่จัดการเอกสาร ในสภาพแวดล้อมการจัดการเอกสาร คุณจะมีคนหลายคนที่โพสต์เอกสารของตนและทำการเปลี่ยนแปลงอย่างต่อเนื่องโดยการเช็คเอาท์และเช็คอินเอกสาร ดังนั้น Node.js จึงดีสำหรับสภาพแวดล้อมเหล่านี้ เนื่องจากสามารถทริกเกอร์เหตุการณ์วนซ้ำใน Node.js เมื่อใดก็ตามที่เอกสารมีการเปลี่ยนแปลงในสภาพแวดล้อมที่มีการจัดการเอกสาร
  4. เซิร์ฟเวอร์โฆษณา – ขอย้ำอีกครั้งว่าคุณอาจได้รับคำขอนับพันรายการเพื่อดึงโฆษณาจากเซิร์ฟเวอร์กลาง และ Node.js ก็เป็นเฟรมเวิร์กที่เหมาะสมที่สุดในการจัดการกับสิ่งนี้
  5. เซิร์ฟเวอร์สตรีมมิ่ง – อีกสถานการณ์หนึ่งในอุดมคติในการใช้ Node คือสำหรับเซิร์ฟเวอร์สตรีมมิ่งมัลติมีเดียที่ไคลเอนต์ร้องขอให้ดึงเนื้อหามัลติมีเดียที่แตกต่างจากเซิร์ฟเวอร์นี้

Node.js มีประโยชน์เมื่อคุณต้องการการทำงานพร้อมกันในระดับสูงแต่ใช้เวลา CPU เฉพาะน้อยลง

เหนือสิ่งอื่นใด เนื่องจาก Node.js สร้างขึ้นจากจาวาสคริปต์ จึงเหมาะที่สุดเมื่อคุณสร้างแอปพลิเคชันฝั่งไคลเอ็นต์ซึ่งใช้เฟรมเวิร์กจาวาสคริปต์เดียวกัน

เมื่อใดที่ไม่ควรใช้ Node.js

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

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