Es ist besonders gut im Umgang mit einer Tonne Datei-E / A und ich würde erwarten, dass es auch eine Tonne Netzwerkkommunikation gut handhabt. Es scheint besonders beliebt für Socket-gesteuerte Apps zu sein. Das Wichtigste ist, dass Sie möglicherweise in ein C eintauchen müssen, das an JS-Befehle gebunden werden kann, wenn Ihre Anforderungen nicht von vorhandenen Bibliotheken erfüllt werden (es gibt viele). Sie können auch zusätzliche Knotenprozesse erzeugen, aber ich vermute, dass eine Menge davon zu Steuern führen kann (ich gehe davon aus - möglicherweise falsch -, dass für jede dieser Prozesse eine V8-Instanz erzeugt wird).
JS ist Single-Threaded und blockiert, was bedeutet, dass nichts anderes ausgeführt werden kann, bis ein Funktionsaufruf abgeschlossen ist. Dies war eine erwünschte Funktion von JS, die im Wesentlichen alle Threading- und Warteschlangenprobleme aus Ihren Händen nahm. Das JS hindert das C / C ++ - Zeug nicht daran, unter der Haube mehr Multithreading auszuführen, sodass JS wirklich mehr Architektur / Messenger ist. Wenn Sie Bilder verarbeiten, möchten Sie dies nicht mit synchronen JavaScript-Befehlen behandeln, da alles andere auf Ihrer App oder Ihrem Server blockiert wird, bis es fertig ist. Die Idee ist, dass Sie ein Bild aufrufen, das von gebundenen C / C ++ - Funktionen verarbeitet werden soll, und dann auf das Ereignis "Fertig" reagieren, wenn das Bild fertig verarbeitet ist.
Dies erfordert, dass der JS in einer Node.js-App stark ereignis- und rückrufgesteuert ist, da er sonst wahrscheinlich eine sehr schlechte Leistung erbringt. Daher werden in Node nicht viele Methodenaufrufe angezeigt, denen keine Funktion zur späteren Verwendung übergeben wird. Eine Sache, die in Node sehr schnell klar wird, ist, dass Sie sich in einer Welt der Hässlichkeit befinden, wenn Sie keinen Weg finden, mit der Rückrufpyramide umzugehen. z.B
//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 );
} );
} );
Glücklicherweise gibt es viele Tools und Beispiele, um dies besser zu handhaben. Die meisten drehen sich in der Regel um Versprechensmechanismen und verketten einfach eine Reihe von Funktionen, die auf die Rückrufzustände des anderen in einem Array reagieren sollen, das die hässlichen Pyramiden für Sie unter der Haube erledigt.
Persönlich finde ich es verdammt toll, dass wir JS auf hohem Niveau und C / C ++ näher am Chrom haben. Es ist die ultimative Kombination und hat mich dazu inspiriert, C zu lernen. Und lassen Sie sich nicht vom Mangel an Bibliothekspotential ausflippen, bis Sie einige Nachforschungen angestellt haben. Knotenbibliotheken werden sehr schnell erstellt und reifen sehr schnell. Wenn Sie nichts tun, sind ungewöhnliche Chancen gut, dass jemand sie abgedeckt hat.
Der größte Unterschied zu Rails besteht darin, dass JS wahrscheinlich nie sozusagen auf Schienen ist. Wir neigen dazu, zu codieren, um es haben zu können, aber Sie wollen es sehr schnell, so dass es das Seil gibt, mit dem Sie sich aufhängen können, und Architektur war in JS bis in die letzten Jahre ziemlich DIY. Ich nenne das Freiheit, aber mir ist klar, dass dies für viele Entwickler nicht ideal ist.
Außerdem werden Sie in Node.js niemals ein "Juwel" -Problem haben, weil Sie versucht haben, es auf etwas anderem als einem Mac zu installieren. Clientseitige Webentwickler verachten Abhängigkeitsprobleme, und daher kommt ein Großteil des Kerns von Node. Wenn es auf jeder gängigen Plattform nicht innerhalb von 5 Minuten oder weniger sofort funktioniert, zerknüllen wir es im Allgemeinen und werfen es weg. Ich habe noch kein beliebtes Modul gefunden, für das ich etwas Besonderes tun musste, damit es funktioniert. Das Paketsystem ist ausgezeichnet.
Aber um Ihre Kernfrage expliziter / prägnanter zu beantworten: Ist es gut mit Hintergrundprozessen?
Ja, Node IS-Hintergrundprozesse mit dem Mittel, eine App über Ereignisse und Rückrufe zu steuern.