suchen
HeimWeb-Frontendjs-TutorialExpress-Autor TJ verabschiedet sich von Node.js und macht sich auf den Weg zu Go_node.js

Zuallererst ist dies ein Artikel, der aus TJs Farewell Node.js übersetzt wurde, nachdem ich diesen Artikel gelesen hatte, aber ich bin mit einigen Ansichten des Autors nicht einverstanden, zum Beispiel mit dem Paket von Node Register ist einer seiner vielen Vorteile, aber in diesem Aspekt mangelt es Go etwas. Aufgrund meiner persönlichen Einschränkungen habe ich beim Übersetzen viele Dinge nicht verstanden. Ich habe auch den Blog des Autors und Stackoverflow besucht, um einige Fragen zu stellen und Antworten zu erhalten. Es gibt immer noch viele Unvollkommenheiten in der Übersetzung, und ich hoffe, Sie können einige Hinweise bekommen.

PS. Als Neuling in Node.js möchte ich TJ für seine harte Arbeit danken und eine gute Reise wünschen.

Text:

Lebewohl Node.js

Node.js-Bereich verlassen

Ich habe lange genug mit Node.js in der Produktion gekämpft, und jetzt, da mir die Arbeit zumindest im Moment keinen Spaß mehr macht, ist dies leider mein offizieller Abschied. Noch wichtiger ist, dass ich Betreuer brauche.

Node ist in mancher Hinsicht großartig, aber es ist nicht das richtige Tool für die Art von Software, an der ich mich heutzutage interessiere. Ich habe weiterhin vor, Node für die Website zu verwenden, aber wenn Sie daran interessiert sind, Projekte zu pflegen, hinterlassen Sie einfach einen Kommentar mit Ihrem Github-Benutzernamen, npm-Benutzernamen und Projektnamen, um mir Bescheid zu geben. Normalerweise verlange ich nur, dass Sie die vorhandene API nicht vollständig ändern. Wenn Sie dies wirklich tun möchten, ist es besser, ein neues Projekt zu starten.

Koa ist ein Projekt, das ich weiterhin pflegen werde. (Mit Co und Freunden)

Die Geschichte vom Heiligen Gral

Ich habe C schon immer geliebt, aber jeder, der in der C-Entwicklung arbeitet, weiß, dass es wertvoll, aber fehleranfällig ist. Es ist schwer, die Wahl einer Sprache im Arbeitsalltag zu rechtfertigen, weil sie nicht gerade die schnellste für den Job ist. Einfachheit wird auch immer gelobt, aber ohne jede Menge Vorlagen kommt man nicht weit.

Je mehr ich mich mit der Entwicklung verteilter Systeme befasse, desto mehr frustriert mich der Trend, dass die Knotenleistung höher ist als die Verfügbarkeit und Robustheit. In der letzten Woche habe ich ein relativ großes verteiltes System in Go umgeschrieben, um es robuster, leistungsfähiger und einfacher zu warten zu machen. Da synchroner Code im Allgemeinen eleganter und einfacher zu entwickeln ist, weist er eine bessere testbare Abdeckung auf.

Ich sage nicht, dass Go der Heilige Gral ist, es ist nicht perfekt, aber für viele Sprachen, die es heute gibt, ist Go für mich eine hervorragende Antwort. Da immer mehr dieser Sprachen der „nächsten Generation“ wie Rust und Julia ihre Nische finden und ausgereift sind, bin ich sicher, dass wir weitere großartige Lösungen haben werden.

Persönlich bin ich von der GO-Sprache aufgrund ihrer Iterationsgeschwindigkeit sehr begeistert. Ich war sehr gespannt darauf, Version 2.0 zu erreichen, und laut den Nachrichten, die ich gehört habe, hatten sie keine Angst und haben das Original kaputt gemacht. Ich würde es lieben, wenn es wahr wäre, vor allem, weil ich glaube, dass es bestehende Dinge schnell zerstören sollte, wenn es wirklich gut für die Sprache ist. Aber ich bin auch kein Softwareriese, der viele Systeme betreibt. :D

Herausgeber: Ich muss einige der Einsendungen an die Mailingliste falsch interpretiert haben; sie waren zu keinem Zeitpunkt bestrebt, bahnbrechende Änderungen vorzunehmen. @enneff

Warum gehen?

Wenn Node für Sie funktioniert und Sie sich keine Sorgen machen müssen, ist es immer noch ein großartiges Tool. Aber wenn Sie etwas stört, vergessen Sie nicht, über Ihren Tellerrand hinauszugehen und zu sehen, was über den Tellerrand hinausgeht – schon in den ersten Stunden nach der Entwicklung eines Produkts mit Go war ich begeistert.

Noch einmal: Ich sage nicht, dass Go die absolut beste Sprache ist und man sie verwenden muss. Aber es ist für sein Alter sehr ausgereift und stark. (Ungefähr als ich im gleichen Alter wie Node war). Typ-Refactoring macht Spaß und ist einfach, die von Go bereitgestellten Job- und Debugging-Tools sind großartig und die Community hat sehr strenge Vorschriften zu Dokumentation, Formaten, Benchmarks und API-Design.

Da ich so sehr an die extreme Modularität von Node gewöhnt war und Rubys verrottete Standardbibliothek kennengelernt hatte, fand ich die Standardbibliothek schrecklich, als ich zum ersten Mal von Go hörte. Nachdem ich mich eingehender mit dieser Sprache beschäftigt hatte, wurde mir klar, dass die meisten Standardbibliotheken in dieser Phase sehr notwendig sind, wie z. B. Komprimierung, JSON, IO, gepufferte IO, String-Operationen usw. Die meisten dieser APIS sind gut definiert und leistungsstark. Es ist einfach, ganze Programme zu schreiben, indem man einfach diese Standardbibliotheken verwendet.

Go-Pakete von Drittanbietern

Die meisten Go-Bibliotheken sehen ähnlich aus und der Großteil des Codes von Drittanbietern, den ich bisher verwendet habe, ist von hoher Qualität, was in Node schwer zu finden ist, da JavaScript Entwickler mit unterschiedlichen Qualifikationsniveaus in den Geltungsbereich lockt.

Für Go-Pakete gibt es kein Registrierungscenter, sodass Sie normalerweise 5 oder 6 gleiche Pakete gleichzeitig sehen. Dies kann manchmal zu Verwirrung führen, hat aber den interessanten Nebeneffekt, dass Sie jedes Paket sorgfältig prüfen müssen, um zu entscheiden, welches die beste Lösung ist. Bei Node gibt es normalerweise kanonische Pakete wie „redis“, „mongodb-native“ oder „zeromq“, also bleiben Sie hier stehen und schließen einfach, dass sie die besten sind.

Wenn Sie verteilt arbeiten, werden Sie die beeindruckenden Parallelitätsbasisdatentypen von Go als sehr hilfreich empfinden. Mit Generatoren in Node können wir etwas Ähnliches erreichen, aber meiner Meinung nach sind Generatoren nur die halbe Miete. Ohne unabhängige Fehlerbehandlung ist der Berichtsstapel immer noch im besten Fall banal. Wenn diese Lösungen gut funktionieren, möchte ich nicht drei Jahre warten, bis sich die Community neu organisiert.

Meiner Meinung nach ist die Fehlerbehandlung von Go hervorragend. Node ist insofern großartig, als man jeden Fehler berücksichtigen und entscheiden muss, was zu tun ist. Der Knoten schlägt jedoch fehl bei:

Sie können Rückrufe wiederholt durchführen

Es kann sein, dass Sie überhaupt keine Rückrufe durchführen und sich in einem instabilen Zustand verlieren (wenn Sie beispielsweise vergessen, einen Fehlerbehandlungsrückruf zu übergeben, verschluckt Node den Fehler beim Auftreten eines Fehlers ohne Rückmeldung)

Möglicherweise erhalten Sie standardmäßige Fehler

Emittenten erhalten möglicherweise mehrere falsche Ereignisse

Das Vergessen der falschen Ereignisbehandlung wird alles ruinieren

Oft unsicher, was falsch gemacht werden muss

Fehlerbehandlung ist sehr überflüssig

Rückrufe sind scheiße
Wenn in Go mein Code endet, endet er und Sie können die Anweisung nicht erneut ausführen. In Node ist dies undefiniert. Man könnte annehmen, dass ein Programm vollständig ausgeführt wird, bis eine Bibliothek versehentlich mehrmals einen Rückruf aufruft oder die Handler nicht ordnungsgemäß löscht und eine erneute Ausführung des Codes verursacht. Es ist ziemlich schwierig, diese Gründe im tatsächlichen Produktionscode zu finden. Warum also sollte man sich die Mühe machen? Andere Sprachen bereiten einem diesen Schmerz nicht.

Knoten der Zukunft

Ich hoffe immer noch, dass Node gut abschneidet und viele Leute viel in es investieren, es hat wirklich großes Potenzial. Ich denke, Joyent und das Team müssen sich auf die Benutzerfreundlichkeit konzentrieren – Leistung ist bedeutungslos, wenn Ihre Anwendung fragil und schwierig zu debuggen, umzugestalten und zu entwickeln ist.

Die Tatsache, dass wir in 4-5 Jahren immer noch diesen vagen Fehler „Fehler: getaddrinfo EADDRINFO“ haben werden, verrät uns, wo die Entwicklungsprioritäten von Node liegen. Verständlicherweise übersieht man diese Dinge leicht, wenn man sich auf den Aufbau des Kerns des Systems konzentriert. Ich denke, dass Benutzer immer wieder ihre Meinung zu solchen Dingen geäußert haben, ohne irgendwelche Ergebnisse zu sehen. Normalerweise erhalten wir eine Handvoll Antworten auf Behauptungen, dass das, was wir haben, bereits perfekt ist. In der Praxis ist dies nicht der Fall.

Streams werden unterbrochen, Rückrufe sind nicht einfach zu verwenden, Fehler sind unklar und Tools sind nicht einfach zu verwenden. Es gibt Community-Vorschriften, aber diese fehlen im Vergleich zu Go. Trotzdem verwende ich Node möglicherweise weiterhin für einige spezifische Aufgaben, wie zum Beispiel das Erstellen von Webseiten oder einige verstreute APIs oder Prototypen. Wenn Node einige seiner grundlegenden Probleme beheben kann, hat es eine Chance, relevant zu bleiben, aber das Argument für Leistung statt Verfügbarkeit geht nicht weit, wenn es eine Alternative gibt, die sowohl höhere Leistung als auch höhere Verfügbarkeit bietet.

Wenn die Node-Community beschließt, Generatoren zu übernehmen und sie in einem sehr zentralen Teil von Node zu implementieren und Fehler ordnungsgemäß zu verbreiten, besteht die Möglichkeit, dass darauf verwiesen werden kann. Dies wird die Verfügbarkeit und Robustheit von Node drastisch verbessern.

Die gute Nachricht ist, dass ich vor einiger Zeit mit den tollen und talentierten Leuten gesprochen habe, die den Kerncode zu StrongLoop beisteuern. Sie verfolgen einen klaren Ansatz, indem sie auf die Reaktionen der Entwickler auf die Plattform hören und planen, den richtigen Weg zur Behebung dieser Probleme zu finden, um die Zusammenarbeit mit Node in Zukunft einfacher zu gestalten. Ich bin mir nicht sicher, wie der Konflikt um die gleichzeitige Entwicklung von Kernteilen durch mehrere Unternehmen enden wird, aber ich hoffe, dass sich die entwicklerorientierte Seite durchsetzen wird.

Dies soll kein persönlicher Angriff sein, es gibt viele wirklich talentierte Leute, die mit oder an der Spitze von Node arbeiten, aber das interessiert mich nicht mehr. Ich hatte eine tolle Zeit in der Node-Community und habe einige wirklich interessante Leute kennengelernt.

Die Moral der Geschichte lautet: Lassen Sie sich nicht von Ihrem eigenen Kreis einschränken! Sehen Sie, was anderswo verfügbar ist, und vielleicht haben Sie wieder Spaß am Programmieren. Es gibt so viele großartige Lösungen, dass ich den Fehler gemacht habe, zu lange damit zu warten, sie auszuprobieren!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
JavaScripts Kern: Ist es auf C oder C aufgebaut?JavaScripts Kern: Ist es auf C oder C aufgebaut?May 05, 2025 am 12:07 AM

JavaScriptisnotbuiltoncorc; Es ist angehört, dass sich JavaScriptWasdedeSthatrunsonGineoFtencninc.

JavaScript-Anwendungen: Von Front-End bis Back-EndJavaScript-Anwendungen: Von Front-End bis Back-EndMay 04, 2025 am 12:12 AM

JavaScript kann für die Entwicklung von Front-End- und Back-End-Entwicklung verwendet werden. Das Front-End verbessert die Benutzererfahrung durch DOM-Operationen, und die Back-End-Serveraufgaben über node.js. 1. Beispiel für Front-End: Ändern Sie den Inhalt des Webseitentextes. 2. Backend Beispiel: Erstellen Sie einen Node.js -Server.

Python vs. JavaScript: Welche Sprache sollten Sie lernen?Python vs. JavaScript: Welche Sprache sollten Sie lernen?May 03, 2025 am 12:10 AM

Die Auswahl von Python oder JavaScript sollte auf Karriereentwicklung, Lernkurve und Ökosystem beruhen: 1) Karriereentwicklung: Python ist für die Entwicklung von Datenwissenschaften und Back-End-Entwicklung geeignet, während JavaScript für die Entwicklung von Front-End- und Full-Stack-Entwicklung geeignet ist. 2) Lernkurve: Die Python -Syntax ist prägnant und für Anfänger geeignet; Die JavaScript -Syntax ist flexibel. 3) Ökosystem: Python hat reichhaltige wissenschaftliche Computerbibliotheken und JavaScript hat ein leistungsstarkes Front-End-Framework.

JavaScript -Frameworks: Stromversorgung moderner WebentwicklungJavaScript -Frameworks: Stromversorgung moderner WebentwicklungMay 02, 2025 am 12:04 AM

Die Kraft des JavaScript -Frameworks liegt in der Vereinfachung der Entwicklung, der Verbesserung der Benutzererfahrung und der Anwendungsleistung. Betrachten Sie bei der Auswahl eines Frameworks: 1. Projektgröße und Komplexität, 2. Teamerfahrung, 3. Ökosystem und Community -Unterstützung.

Die Beziehung zwischen JavaScript, C und BrowsernDie Beziehung zwischen JavaScript, C und BrowsernMay 01, 2025 am 12:06 AM

Einführung Ich weiß, dass Sie es vielleicht seltsam finden. Was genau muss JavaScript, C und Browser tun? Sie scheinen nicht miteinander verbunden zu sein, aber tatsächlich spielen sie eine sehr wichtige Rolle in der modernen Webentwicklung. Heute werden wir die enge Verbindung zwischen diesen drei diskutieren. In diesem Artikel erfahren Sie, wie JavaScript im Browser ausgeführt wird, die Rolle von C in der Browser -Engine und wie sie zusammenarbeiten, um das Rendern und die Interaktion von Webseiten voranzutreiben. Wir alle kennen die Beziehung zwischen JavaScript und Browser. JavaScript ist die Kernsprache der Front-End-Entwicklung. Es läuft direkt im Browser und macht Webseiten lebhaft und interessant. Haben Sie sich jemals gefragt, warum Javascr

Node.js Streams mit TypeScriptNode.js Streams mit TypeScriptApr 30, 2025 am 08:22 AM

Node.js zeichnet sich bei effizienten E/A aus, vor allem bei Streams. Streams verarbeiten Daten inkrementell und vermeiden Speicherüberladung-ideal für große Dateien, Netzwerkaufgaben und Echtzeitanwendungen. Die Kombination von Streams mit der TypeScript -Sicherheit erzeugt eine POWE

Python vs. JavaScript: Leistung und EffizienzüberlegungenPython vs. JavaScript: Leistung und EffizienzüberlegungenApr 30, 2025 am 12:08 AM

Die Unterschiede in der Leistung und der Effizienz zwischen Python und JavaScript spiegeln sich hauptsächlich in: 1 wider: 1) Als interpretierter Sprache läuft Python langsam, weist jedoch eine hohe Entwicklungseffizienz auf und ist für eine schnelle Prototypentwicklung geeignet. 2) JavaScript ist auf einen einzelnen Thread im Browser beschränkt, aber Multi-Threading- und Asynchronen-E/A können verwendet werden, um die Leistung in Node.js zu verbessern, und beide haben Vorteile in tatsächlichen Projekten.

Die Ursprünge von JavaScript: Erforschung seiner ImplementierungsspracheDie Ursprünge von JavaScript: Erforschung seiner ImplementierungsspracheApr 29, 2025 am 12:51 AM

JavaScript stammt aus dem Jahr 1995 und wurde von Brandon Ike erstellt und realisierte die Sprache in C. 1.C-Sprache bietet Programmierfunktionen auf hoher Leistung und Systemebene für JavaScript. 2. Die Speicherverwaltung und die Leistungsoptimierung von JavaScript basieren auf C -Sprache. 3. Die plattformübergreifende Funktion der C-Sprache hilft JavaScript, auf verschiedenen Betriebssystemen effizient zu laufen.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

MinGW – Minimalistisches GNU für Windows

MinGW – Minimalistisches GNU für Windows

Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

Dreamweaver Mac

Dreamweaver Mac

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

SublimeText3 Englische Version

SublimeText3 Englische Version

Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!