Ich sehe immer wieder Personalvermittler, Entwickler usw., die auf Node.js als Framework verweisen. Meiner Meinung nach liegt dies an der Unwissenheit darüber, was Node.js wirklich ist.
In Stellenbeschreibungen wird Node.js häufig als Bibliothek in AngularJS , React usw. gruppiert. Im Allgemeinen wird es meiner Ansicht nach von jemandem eingegeben, der den Unterschied nicht kennt (Personalabteilung, Personalvermittler usw.).
Meiner Meinung nach ist Node.js eine Plattform oder eine Laufzeitumgebung. Es schaltet die DOM-API (JavaScript im Browser) für verschiedene andere APIs wie das Dateisystem aus (da es als Server und nicht im Browser ausgeführt wird).
Warum denken die Leute, dass Node.js ein Framework ist? Liege ich falsch? Ist es eigentlich ein Rahmen?
quelle
Antworten:
Es ist ein bisschen schwer zu sagen, weil diese Wörter nicht gut definiert sind. Im allgemeinen Sprachgebrauch finde ich es etwas untypisch, Node.js als Framework zu bezeichnen, aber es fällt mir schwer, darüber zu streiten, warum genau dies nicht der Fall ist.
Das alles wird schwierig, und ich sehe oft einen sehr schlechten Sprachgebrauch. Deshalb werde ich explizit vorgehen und ganz unten anfangen
JavaScript ist eine Computersprache, dh eine Reihe von Konventionen, die es uns ermöglichen, eine Reihe von Texten so zu lesen und zu interpretieren, dass sie eine Ausführungssemantik haben . Klassen von Programmen, die als Interpreter , Compiler , Transpiler , Linters , Highlighter usw. bezeichnet werden, nehmen alle Text auf und versuchen, etwas mit diesem herkömmlichen Verständnis der Codeausführung zu tun.
Lassen Sie uns nun ein wenig in die Ausführungssemantik eintauchen. Im Allgemeinen beinhaltet die Ausführungssemantik einen Prozess des Lesens von Sprachtext und des Erreichens einer Beschreibung einer abstrakten Maschine oder einer Beschreibung beobachtbarer Nebenwirkungen . Was ich vorschlagen möchte, ist, dass beide davon ausgehen, dass es eine Art "Low-Level-API" geben muss, um die Maschine zu bedienen oder die beobachtbaren Effekte auszuführen. Diese werden normalerweise als Teil der Laufzeitumgebung betrachtet
Das Wort Laufzeit wird gewöhnlich missbraucht, um sowohl die Menge der angenommenen Grundelemente selbst als auch eine tatsächliche Instanziierung derselben zu bezeichnen.
Also, jetzt kommen wir zu etwas Haarigem. Eine Sprache ist eine Reihe von Konventionen, die die Existenz einer Laufzeit voraussetzen, um ihrer Ausführungssemantik einen Sinn zu verleihen. Es "untersucht" sie niemals, da sie außerhalb des Anwendungsbereichs liegen.
Um eine Sprache tatsächlich verwenden zu können, benötigen Sie neben einer Laufzeitimplementierung einen Compiler oder Interpreter. Der Compiler / Interpreter und diese Laufzeit gehen Hand in Hand, wenn Sie Ihren Code tatsächlich ausführen .
Wo passt Node.js dazu?
Wir müssen es in Teile zerlegen:
Node.js ist also eine Menge Dinge!
Aber ist es ein Rahmen?
Hier fällt die Terminologie völlig auseinander - niemand hat eine gute, konsistente und aussagekräftige Definition dessen, was ein Framework eigentlich ist.
Es gibt Debatten, die toben: "Was ist ein Framework gegenüber einer Bibliothek?" Und sie enden mit unbefriedigenden Dingen wie "Eine Bibliothek nennt man etwas und ein Framework nennt man etwas". Ich möchte nicht einmal wirklich eine so traurige Erklärung ans Tageslicht bringen - aber JavaScript und insbesondere Node.js JavaScript sind ein schwerer Schlag für diese Definition, da die gesamte Callback-Passing-Technik bedeutet, dass Sie ständig zwischen Anrufen wechseln und angerufen werden.
Meiner persönlichen Meinung nach gibt es hier etwas Wesentliches. Ich möchte keine klare Linie ziehen, sondern nur sagen
Dies ist zwar eine Hand-Wave-Linie, aber ich möchte einen wirklich interessanten Punkt zu Frameworks herausgreifen:
Frameworks beinhalten eine Reihe von Konventionen zur Interpretation von Code. Sie sind daher eine eigene Sprache.
Vielleicht möchten die Leute auch darüber streiten, aber wenn Sie meine frühere Definition gekauft haben, dass eine Sprache nur eine Reihe von Konventionen ist, die einen Textblock zum Leben erwecken, dann immer dann, wenn Sie eine neue Ebene von Konventionen aufstellen. ' habe eine neue sprache gebaut. Vielleicht sind die Rohstoffe bei Frameworks die semantischen Interpretationen ihrer Host-Sprache anstelle von Rohtextdateien, aber die Idee ist dieselbe!
Daher bin ich total glücklich, Node.js als Framework zu bezeichnen, auch wenn es ein bisschen gegen die Norm verstößt! Node.js fügt dem unformatierten JavaScript Funktionen hinzu , um die Sprache zu erweitern . Damit kommen neue Annahmen und Werkzeuge für das Arbeiten in dieser erweiterten Sprache. Funktionell sind diese Ideen dieselben wie die Ideen anderer gut akzeptierter Frameworks wie Ruby on Rails .
Ich würde behaupten, wenn Sie sich in diesem Moment etwas unwohl fühlen und behaupten möchten, dass Ruby on Rails und Node.js in dieser Hinsicht sehr unterschiedlich sind, dann bin ich natürlich genau bei Ihnen . Die Art der begrifflichen Welten, in denen die beiden leben, ist dramatisch unterschiedlich - ich möchte nur sagen, dass sie dasselbe sind: Konventionen zur Erweiterung der Fähigkeiten einer Basissprache in einem bestimmten Bereich.
Ich schlage auch gerne vor, dass die Domain von Node.js winzig und eng ist und daher die darin enthaltenen Konventionen einfach zu erklären und relativ einfach zu korrigieren sind. OTOH, Ruby on Rails, lebt in einer komplexen, schlecht definierten Domäne von "Business-Webanwendungen", was bedeutet, dass die darin enthaltenen Konventionen mit Sicherheit unscharf und fehlerhaft sind.
Aber all dies ist eine lange Art zu sagen, ja, Personalvermittler haben wahrscheinlich keine Ahnung, was sie meinen, wenn sie das sagen. Ich vermute, "Framework" klingt einfach wie ein besseres, gröberes Wort als "Runtime" oder "Engine".
quelle
probably have no idea
: 'Framework' ist ein Wort, das Sie verstehen können, ohne Programmierer zu sein, ein nützliches Feature, wenn Sie nicht wissen, wann es tatsächlich etwas bewirken würde.Quelle
Knoten ist eine Laufzeit oder Umgebung. Es ist kein Rahmen. Leute (ich glaube) verstehen das oft falsch, weil Frameworks wie Express mit node allgegenwärtig sind.
Lesen Sie mehr über Laufzeiten und Frameworks, wenn Sie interessiert sind.
quelle