บทช่วยสอน 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 กัน
- 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" จะถูกเขียนลงในบันทึกของคอนโซล
- โหนดใช้ V8 JavaScript Runtime engine ซึ่งเป็นเครื่องมือที่ใช้โดย Google Chrome- โหนดมีกระดาษห่อหุ้มอยู่ Javaกลไกสคริปต์ที่ทำให้กลไกรันไทม์เร็วขึ้นมาก และทำให้การประมวลผลคำขอภายใน Node เร็วขึ้นด้วยเช่นกัน
- การจัดการคำขอที่เกิดขึ้นพร้อมกัน – ฟังก์ชันหลักอีกประการหนึ่งของโหนดคือความสามารถในการจัดการการเชื่อมต่อที่เกิดขึ้นพร้อมกันโดยมีค่าใช้จ่ายน้อยที่สุดในกระบวนการเดียว
- ไลบรารี Node.js ใช้ Javaสคริปต์ – นี่เป็นอีกแง่มุมที่สำคัญของการพัฒนาใน Node.js ชุมชนนักพัฒนาส่วนใหญ่มีความรู้ด้าน JavaScript เป็นอย่างดี ดังนั้นการพัฒนาใน Node.js จึงง่ายขึ้นสำหรับนักพัฒนาที่มีความรู้ด้าน JavaScript
- มีชุมชนที่กระตือรือร้นและมีชีวิตชีวาสำหรับเฟรมเวิร์ก 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 เหมาะที่สุดสำหรับการใช้งานในการสตรีมหรือแอปพลิเคชันเรียลไทม์ตามเหตุการณ์เช่น
- แอปแชท
- เซิร์ฟเวอร์เกม – เซิร์ฟเวอร์ที่รวดเร็วและมีประสิทธิภาพสูงซึ่งจำเป็นต้องประมวลผลคำขอหลายพันรายการในแต่ละครั้ง นี่คือเฟรมเวิร์กในอุดมคติ
- สภาพแวดล้อมที่ดีสำหรับการทำงานร่วมกัน - เหมาะสำหรับสภาพแวดล้อมที่จัดการเอกสาร ในสภาพแวดล้อมการจัดการเอกสาร คุณจะมีคนหลายคนที่โพสต์เอกสารของตนและทำการเปลี่ยนแปลงอย่างต่อเนื่องโดยการเช็คเอาท์และเช็คอินเอกสาร ดังนั้น Node.js จึงดีสำหรับสภาพแวดล้อมเหล่านี้ เนื่องจากสามารถทริกเกอร์เหตุการณ์วนซ้ำใน Node.js เมื่อใดก็ตามที่เอกสารมีการเปลี่ยนแปลงในสภาพแวดล้อมที่มีการจัดการเอกสาร
- เซิร์ฟเวอร์โฆษณา – ขอย้ำอีกครั้งว่าคุณอาจได้รับคำขอนับพันรายการเพื่อดึงโฆษณาจากเซิร์ฟเวอร์กลาง และ Node.js ก็เป็นเฟรมเวิร์กที่เหมาะสมที่สุดในการจัดการกับสิ่งนี้
- เซิร์ฟเวอร์สตรีมมิ่ง – อีกสถานการณ์หนึ่งในอุดมคติในการใช้ Node คือสำหรับเซิร์ฟเวอร์สตรีมมิ่งมัลติมีเดียที่ไคลเอนต์ร้องขอให้ดึงเนื้อหามัลติมีเดียที่แตกต่างจากเซิร์ฟเวอร์นี้
Node.js มีประโยชน์เมื่อคุณต้องการการทำงานพร้อมกันในระดับสูงแต่ใช้เวลา CPU เฉพาะน้อยลง
เหนือสิ่งอื่นใด เนื่องจาก Node.js สร้างขึ้นจากจาวาสคริปต์ จึงเหมาะที่สุดเมื่อคุณสร้างแอปพลิเคชันฝั่งไคลเอ็นต์ซึ่งใช้เฟรมเวิร์กจาวาสคริปต์เดียวกัน
เมื่อใดที่ไม่ควรใช้ Node.js
Node.js สามารถใช้งานได้หลากหลายโดยมีวัตถุประสงค์ที่หลากหลาย สถานการณ์เดียวที่ไม่ควรใช้คือที่ซึ่งต้องใช้เวลาในการประมวลผลนาน ซึ่งแอปพลิเคชันกำหนด
โหนดมีโครงสร้างเป็นแบบเธรดเดียว หากแอปพลิเคชันจำเป็นต้องดำเนินการคำนวณระยะยาวในเบื้องหลัง แอปพลิเคชันจะไม่สามารถประมวลผลคำขออื่นใดได้ ตามที่กล่าวไว้ข้างต้น Node.js ใช้งานได้ดีที่สุดเมื่อการประมวลผลต้องการเวลา CPU เฉพาะน้อยกว่า