มีความแข็งแกร่งเป็นพิเศษในการจัดการไฟล์ I / O จำนวนมากและฉันคาดหวังให้จัดการกับเครือข่ายการสื่อสารจำนวนมากเช่นกัน ดูเหมือนว่าเป็นที่นิยมโดยเฉพาะสำหรับแอปที่ขับเคลื่อนด้วยซ็อกเก็ต สิ่งสำคัญที่ต้องจำไว้ก็คือหากคุณไม่ต้องการห้องสมุดที่มีอยู่ (มีอยู่มากมาย) คุณอาจต้องดำดิ่งลงใน C ซึ่งสามารถผูกกับคำสั่ง JS คุณยังสามารถวางไข่กระบวนการ Node เพิ่มเติมได้ แต่ฉันคิดว่าการทำหลายอย่างอาจต้องเสียภาษี
JS เป็นเธรดเดี่ยวและการบล็อกหมายความว่าไม่มีสิ่งใดที่สามารถดำเนินการได้จนกว่าการเรียกใช้ฟังก์ชันจะเสร็จสิ้น นี่เป็นฟีเจอร์ที่ต้องการของ JS โดยให้ความสำคัญกับการทำเกลียวและจัดคิวทั้งหมดจากมือของคุณ JS ไม่ได้หยุดสิ่งที่ C / C ++ จากการทำงานในแบบมัลติเธรดมากขึ้นภายใต้ประทุนดังนั้นบทบาทของ JS เป็นสถาปัตยกรรม / ผู้ส่งสารมากขึ้นจริงๆ หากคุณกำลังประมวลผลภาพคุณจะไม่ต้องการจัดการกับคำสั่ง JavaScript แบบซิงโครนัสเพราะทุกอย่างในแอปหรือเซิร์ฟเวอร์ของคุณจะถูกบล็อกจนกว่าจะเสร็จ แนวคิดคือคุณต้องเรียกใช้รูปภาพที่จะถูกประมวลผลด้วยฟังก์ชัน C / C ++ ที่ถูกผูกไว้จากนั้นตอบสนองต่อเหตุการณ์ 'เสร็จสิ้น' เมื่อประมวลผลภาพเสร็จแล้ว
สิ่งนี้ต้องการให้ JS ในแอป Node.js เป็นเหตุการณ์ที่หนักหน่วงและมีการติดต่อกลับหรือมีแนวโน้มที่จะทำงานได้ไม่ดีนัก ดังนั้นคุณจะไม่เห็นการเรียกใช้เมธอดจำนวนมากในโหนดที่ไม่ได้รับฟังก์ชั่นสำหรับใช้ในภายหลัง สิ่งหนึ่งที่ชัดเจนอย่างรวดเร็วในโหนดคือคุณกำลังอยู่ในโลกที่น่าเกลียดถ้าคุณไม่พบวิธีจัดการกับปิรามิดโทรกลับ เช่น
//event CBs are more DOM-style than Node style and this isn't built-in Node file I/O
//keeping it simple and quick since I'll just get Node stuff wrong from memory
file.get('someFile.txt', function(e){
e.fileObj.find('some snippet', function(e){
someFinalCallBackHandler( e.snippetLocations );
} );
} );
โชคดีที่มีเครื่องมือและตัวอย่างมากมายสำหรับการจัดการที่ดีกว่านี้ ส่วนใหญ่มีแนวโน้มที่จะหมุนรอบกลไกสัญญาและเพียงผูกมัดชุดของฟังก์ชั่นหมายถึงการตอบสนองต่อรัฐโทรกลับของกันและกันในอาร์เรย์ที่ทำสิ่งปิรามิดน่าเกลียดสำหรับคุณภายใต้ประทุน
โดยส่วนตัวแล้วฉันหลงรักที่เราได้รับ JS ในระดับสูงและ C / C ++ ใกล้กับโครเมี่ยม มันเป็นคำสั่งผสมที่ดีที่สุดและมันเป็นแรงบันดาลใจให้ฉันเริ่มเรียนรู้ C. และอย่าปล่อยให้ห้องสมุดขาดความเป็นไปได้ที่จะทำให้คุณประหลาดจนกว่าคุณจะทำการค้นคว้า ไลบรารีของโหนดกำลังถูกสร้างขึ้นอย่างรวดเร็วและกำลังเติบโตอย่างรวดเร็ว หากคุณไม่ได้ทำสิ่งที่ผิดปกติอย่างมากคุณก็มีบางสิ่งที่ดี
ความแตกต่างที่ใหญ่ที่สุดของ Rails คือ JS นั้นไม่น่าจะเป็นบนรางเหมือนที่เคยเป็นมา เรามักจะเขียนโค้ดเพื่อให้สามารถใช้งานได้ แต่คุณต้องการมันอย่างรวดเร็วดังนั้นจึงมีเชือกที่จะแขวนตัวคุณเองด้วยปัจจัยและสถาปัตยกรรมที่สวยงามใน JS จนกระทั่งปีที่ผ่านมา ฉันเรียกว่าอิสรภาพ แต่ฉันรู้ว่ามันไม่ได้ถูกมองว่าเป็นอุดมคติสำหรับผู้พัฒนาอุปกรณ์จำนวนมาก
นอกจากนี้คุณจะไม่เคยมีปัญหา "อัญมณี" ใน Node.js เพราะคุณพยายามติดตั้งในสิ่งอื่นที่ไม่ใช่ Mac ผู้พัฒนาเว็บฝั่งไคลเอ็นต์นั้นดูถูกปัญหาการพึ่งพาและนั่นคือที่มาของโหนดหลักจำนวนมาก หากไม่สามารถใช้งานได้นอกกรอบภายใน 5 นาทีหรือน้อยกว่าในทุกแพลตฟอร์มที่เป็นที่นิยมโดยทั่วไปเราจะพังและโยนทิ้ง ฉันยังไม่ได้พบกับโมดูลยอดนิยมที่กำหนดให้ฉันทำอะไรเป็นพิเศษเพื่อให้มันทำงานได้ ระบบบรรจุภัณฑ์นั้นยอดเยี่ยม
แต่เพื่อตอบคำถามหลักของคุณอย่างชัดเจน / ชัดถ้อยชัดคำ: มันดีกับกระบวนการเบื้องหลังหรือไม่
ใช่โหนดเป็นพื้นหลังของกระบวนการที่มีวิธีการขับรถแอพผ่านกิจกรรมและการโทรกลับ