Heim > Artikel > Web-Frontend > Wie man 2019 ein besserer Node.js-Entwickler wird
In diesem Artikel werden 19 Fähigkeiten und Themen zusammengestellt, die im Jahr 2019 wertvoll sein könnten. Aber verspüren Sie keinen Druck – ich und die meisten anderen Entwickler sind nicht mit jedem Thema vertraut. Ich denke einfach, dass diese Dinge unsere Aufmerksamkeit verdienen, und das JavaScript-Ökosystem nimmt kein Ende.
1. Typen und Muster hinzufügen – TypeScript ist ein sehr guter Kandidat für 2019
Es stellt sich heraus, dass typloses Codieren nicht nur ineffizient ist, sondern auch Fehler verursacht. anfällig. Dies bedeutet jedoch nicht, dass Sie eine strenge Typsyntax verwenden müssen. Sie können die Strenge des Typs entsprechend der tatsächlichen Situation auswählen, z. B. die Verwendung von JSON-Schema oder Joi zum Überprüfen von Entitäten und Modellen oder die Verwendung statischer Typen zum Kommentieren von JS (siehe). zu https://github.com/facebook/flow) oder verwenden Sie das vollständige TypeScript.
TypeScript hat im Jahr 2018 erhebliche Fortschritte gemacht und scheint das Node-Territorium betreten zu haben. Wenn Sie TypeScript verwenden möchten, sollten Sie sich fragen, ob Sie nur dessen Typfunktionen nutzen möchten. Wenn Sie auch Schnittstellen und abstrakte Klassen verwenden möchten, müssen Sie möglicherweise ein neues Programmierparadigma erlernen.
2. Bereichern Sie Ihren Linter
Linter ist eigentlich ein kostenloses Mittagessen, die Einrichtung dauert nur 5 Minuten, Sie können den automatischen Codeschutz kostenlos erhalten und größere Probleme beim Eingeben von Code finden. Vorbei sind die Zeiten, in denen Flusen einfach nur schick war. Heutzutage können Linters schwerwiegende Codeprobleme aufspüren, z. B. Fehler, die nicht richtig ausgelöst werden, fehlende Informationen, nicht erfüllte Versprechen und andere Fehler, die eigentlich nie in Ihrem Code bleiben sollen.
3. Mehr Java und weniger Ruby – Vertiefen Sie Ihr Architekturwissen
Es gibt nicht viel Wissen über die Architektur und das Design des NodeJS-Ökosystems, alle reden über Microservices, aber nur darüber einige interne Strukturen. Daher basieren die meisten Anwendungen und Beispiele auf MVC-Konzepten sowie einigen anderen Mustern von Ruby. Was ist daran falsch? MVC eignet sich hervorragend zum Erstellen von Inhaltsdiensten, ist jedoch nicht sehr gut zum Erstellen robuster Backends. Können Sie zwei Klassen – Controller und Model – verwenden, um Ihre gesamte Geschäftslogik, Regeln, Datenzugriff und Kommunikation mit anderen Microservices zu beschreiben?
Ich empfehle definitiv nicht, sich für das schwergewichtige Java/Spring-Muster zu entscheiden (das ist der Grund, warum wir uns im Node-Territorium befinden, nicht wahr?), sondern etwas zu wählen, das einen Mehrwert bietet, ohne die Idee der Anwendungseinfachheit zu opfern.
4. Planen Sie, wie Sie Async-Hooks für eine bessere Nachverfolgung und einen besseren Kontext nutzen können.
Das Single-Threaded-Modell hat einen Nachteil: Anforderungen verlieren den Kontext, wenn sie durch mehrere Dateien fließen, und führen beim Betrieb Variablen aus bleiben nicht über die gesamte Lebensdauer erhalten. Warum ist das schlimm? Beispielsweise möchten Entwickler häufig in jeden Protokolleintrag eine eindeutige Kennung einfügen, damit später alle Protokolleinträge für dieselbe Anfrage korreliert werden können – dies ist im Jahr 2018 nicht ganz einfach zu erreichen.
Im Jahr 2019 wird es neue Dinge geben, und Async Hook ist eines davon (keine brandneue Funktion, aber die experimentelle Phase wird bald enden) – einfach ausgedrückt ist dies ein asynchroner Operations-A-Mechanismus um jederzeit am Anfang und am Ende benutzerdefinierten Code einzufügen. Dadurch können Sie den gesamten Code für dieselbe Anfrage korrelieren und den Kontext bewahren. Dies legte den Grundstein für viele benutzerdefinierte Pakete, die die Tracking- und Kontextfunktionen von Node auf die nächste Stufe heben.
5. Erfahren Sie mehr über das Neueste zum Thema „Serverlos“
Hinweis: Die Begriffe FaaS und Serverless werden hier synonym verwendet, obwohl sie nicht genau gleich sind.
Ursprünglich wurde FaaS für die Entwicklung von Mikrotasks verwendet, nicht für „Microservices“-Anwendungen. Mit zunehmender Beliebtheit wuchs auch der Appetit der Cloud-Anbieter, und bald häuften sich neue Funktionen, und im Jahr 2019 schien es eine leistungsstarke Anwendungsinfrastruktur zu sein.
Kann es jetzt mit Kubernetes konkurrieren und große Anwendungen bedienen? Einige halten Serverless und FaaS für orthogonale Technologien, aber in Wirklichkeit muss sich jede neue Cloud-Anwendung im Jahr 2019 für eine von drei entscheiden: Bare-Metal-Instanzen (wie EC2 oder GCP Compute), Kubernetes oder FaaS. Daher wird das Verständnis von K8S und FaaS/Serverless und das Erkennen der Unterschiede zwischen ihnen zu einer wesentlichen Designfähigkeit.
6. Verstehen Sie die neuesten JavaScript-Funktionen
Ich bin kein Fan davon, jeder neuen Sprachfunktion nachzujagen. Manchmal können diese glänzenden Spielzeuge gegen das Prinzip der Einfachheit des Codes verstoßen. Einige wirklich wertvolle JavaScript-Funktionen werden sich mit der Zeit stabilisieren (wie z. B. async/await, das vor zwei Jahren eingeführt wurde), daher lohnt es sich, einen Blick auf die TC39-Vorschlagsliste und node.green zu werfen.
7. Seien Sie mit mindestens einer API-Technologie vertraut – GraphQL ist ein guter Kandidat für 2019
Die API im REST-Stil eignet sich gut für ihre Designziele: Sie bietet eine gute Kontrolle über die Änderung und Abfrage von Entitäten. Angenommen, Sie verfügen über ein Finanzdatensystem, möchten Sie die Endpunkte möglicherweise sehr starr gestalten, d. h. als ein einziges explizites Datenmodell. Es gibt jedoch auch andere sehr häufige Szenarien, in denen REST nicht ausreicht, wie z. B. die Ausführung einer Reihe von Abfragen, die möglicherweise unterschiedliche Datensätze zurückgeben, Netzwerke mit geringer Bandbreite, in denen API-Nutzlasten minimiert werden müssen, Maschine-zu-Maschine-Kommunikation, bei der Geschwindigkeit im Vordergrund steht, und so weiter. Sollte es also durch etwas anderes ersetzt werden? Natürlich nicht, Sie können es auch verwechseln. APIs sind keine Architektur, sie sind lediglich Ports (d. h. Einstiegspunkte) zu Anwendungen, und mehrere API-Stile können nebeneinander existieren, sogar auf einem einzigen Web-Framework wie Express.
Welches sollten Sie also lernen? Ihre beste Wahl ist wahrscheinlich GraphQL, das sich zum Mainstream entwickelt. Sein Ökosystem ist sehr ausgereift und bietet sehr beliebte Anwendungsfälle wie dynamische Suche und hierarchische Datenquellen. Andererseits ist gRPC immer noch eine Nischentechnologie, die für die Server-zu-Server-Kommunikation geeignet ist, da sie nur einen sehr geringen Overhead hat (z. B. bei Verwendung in Pub-Sub-/Message-Queuing-Systemen).
8. Über Unit- und Integrationstests hinaus
Kennen Sie bereits die Testpyramide, Unit-, Integrations- und End-to-End-Tests? Großartig, das sind die Grundlagen einer erfolgreichen Teststrategie. Die Entwicklungslandschaft hat sich in den letzten 10 Jahren dramatisch verändert, aber das Testmodell ist fast dasselbe geblieben, sodass wir uns fragen, wie wir Dinge wie Microservices, Rich Frontends und Serverless testen können. Einige moderne Technologien ergänzen und ersetzen manchmal sogar traditionelle Technologie-Stacks und ermöglichen so eine schlankere Teststrategie und einen höheren ROI.
9. Befolgen Sie die Best Practices von SRE/DevOps bei der Überwachung
Im Jahr 2019 kann selbst eine mittelgroße Anwendung Dutzende bewegliche Teile enthalten. Die meisten Entwickler machen sich jedoch nicht die Mühe, die Überwachungs- und Alarmierungsaspekte zu erlernen, die ihnen von SRE-Ingenieuren beigebracht werden. Beispielsweise priorisieren und konzentrieren sich Entwickler oft auf interne Hardware-Metriken wie CPU und Arbeitsspeicher, anstatt über Metriken nachzudenken, die sich direkt auf das Endbenutzererlebnis auswirken, wie etwa Fehlerraten oder Latenz. Diese kundenorientierten Indikatoren werden manchmal als „goldene Signale“ bezeichnet. Im Jahr 2019 möchten Sie möglicherweise zunächst auf diese Indikatoren achten und ähnliche Best Practices übernehmen.
10. Denken Sie wie ein Angreifer: Erhöhen Sie Ihr Sicherheitsniveau, indem Sie Angriffstools und -techniken erlernen
Wenn Sie nicht wie ein Angreifer denken können, können Sie nicht wie ein Verteidiger denken. Im Jahr 2019 sollten Sie Ihre Verteidigung nicht an Drittunternehmen auslagern oder sich ausschließlich auf statische Sicherheitsscanner verlassen: Die Anzahl der Angriffsarten ist überwältigend und die Geschwindigkeit, mit der sich Anwendungen ändern, unkontrollierbar – nach zwei Tagen Durchführung eines Sicherheitsworkshops. Das Team hat möglicherweise mehrere neue AWS-Dienste, Datenbanktypen und neue IAM-Rollen hinzugefügt … Daher sind Entwickler tatsächlich die größte versteckte Bedrohung, und ihre Aufklärung scheint das ultimative Heilmittel zu sein. Sie müssen die Sicherheits-DNA in sich und Ihrem Team verankern und alles mit Sicherheit versehen.
Wenn man damit anfängt, stellt sich heraus, dass Sicherheitsprobleme gar nicht so beängstigend sind. Sie müssen sich lediglich mit gängigen Angriffstypen und -tools vertraut machen, die Anwendungsarchitektur und den Anwendungsablauf skizzieren und darüber nachdenken, wie Sie selbst angreifen würden. Mit der Zeit und bevor Sie es merken, werden Sie bei jeder Entwurfsentscheidung, die Sie treffen, und bei jeder Codezeile, die Sie schreiben, über Sicherheit nachdenken.
11. Entwickeln Sie eine Paketaktualisierungsstrategie
Lektion aus dem Jahr 2018: Eine zu frühe Aktualisierung kann gefährlich sein. Ein Team verwendet normalerweise eine dieser beiden Paketaktualisierungsstrategien: Die eine besteht darin, so schnell wie möglich zu aktualisieren, manchmal sogar mithilfe eines automatisierten Prozesses. Einer davon ist, dass es überhaupt keine Update-Strategie gibt und Updates manchmal auf der Stimmung basieren. Obwohl die erste Methode besser schien, wurde sie überraschenderweise zur gefährlichsten Methode im Jahr 2018: Innerhalb von 40 Tagen entdeckte die Community mehrere Vorfälle mit bösartigen Paketen wie Flat-Stream. Denjenigen, die warteten, oder Leuten, die nicht aktualisiert wurden, ging es gut. Erwägen Sie den Einsatz automatisierter Tools, um Ihre Update-Strategie zu formalisieren und den Sweet Spot zwischen „keine Updates“ und „Updates“ zu finden.
12. Führen Sie progressive Installationen und separate Bereitstellungs- und Release-Phasen durch.
Im Jahr 2019 ist es für Sie möglicherweise wichtig, sicherere Bereitstellungen durchzuführen, d kleines Herz hämmert wie ein Hammer. Die Durchführung feinkörniger Bereitstellungen (auch Canary-Bereitstellungen genannt) kann in drei Phasen unterteilt werden: Bereitstellung – Senden von neuem Code an eine isolierte neue Produktionsumgebung (z. B. einen neuen Kubernetes-Dienst oder eine neue Maschineninstanz). Zum jetzigen Zeitpunkt werden keine tatsächlichen Benutzer bedient, es besteht also kein Grund zur Sorge. Testen – Eine kleine Anzahl von Personen kann jetzt eine Instanz der Produktionsumgebung verwenden und den neuen Code testen. Freigabe – Erlauben Sie nach und nach mehr Benutzern die Verwendung der neuen Version. Wenn Sie sicher genug sind, können Sie die alte Version entfernen.
Hinweis: Die Durchführung einer vollständigen Canary-Bereitstellung ist auch 2019 immer noch sehr teuer, da hierfür viele Infrastrukturkomponenten wie Routing und Überwachung koordiniert werden müssen. Erwägen Sie daher, mit einfachen und halbmanuellen Canary-Bereitstellungen zu beginnen (z. B. manuelles Hochfahren weiterer Hosts mit einer neuen Version, die auf der Grundlage von Überwachungsmetriken bereitgestellt wird).
13. Kubernetes frisst die Welt
Es gibt einen klaren Trend: Kubernetes (K8S), eine Infrastruktur, die Netzwerk-, Scale-out-, Bereitstellungs- und andere Backbone-Dienste für Anwendungskomponenten bereitstellt, ist mittlerweile fast das De-facto-Standard für gehostete Anwendungen. Seine Beliebtheit ist atemberaubend: Dank der Unterstützung aller Cloud-Anbieter und eines konkurrenzlosen Skalierungsökosystems verfügen 54 % der Unternehmen bereits über mindestens einen K8S-Cluster.
Wenn Sie ein Anfänger sind, finden Sie hier eine gute Übersicht für den Einstieg. Erfahren Sie auch mehr über Istio, K-Native, Kuberenes-Jobs, Netzwerkrichtlinien, Helm und Scaffold. Fazit: Die Zeit, die Sie in die Vertiefung Ihres Verständnisses der K8S-Fähigkeiten investieren, wird sich letztendlich auszahlen.
14. Die Blockchain-Technologie bietet einige großartige Möglichkeiten
Ein ganz klarer Trend: Blockchain wird nicht nur für Bitcoin und kryptografische Funktionen verwendet, sondern kann auch für jedes verteilte Transaktionssystem verwendet werden.
15. Erwerben Sie Fähigkeiten zum maschinellen Lernen und haben Sie zumindest einige Gesprächsthemen. Leider weiß ich nichts über Bibliotheken für maschinelles Lernen. Mein Ziel für 2019 ist es, zumindest darüber sprechen zu können Überlegen Sie sich etwas zum Thema maschinelles Lernen und identifizieren Sie schnelle Erfolge (z. B. können JS-Bibliotheken wie tensorflow.js und brain.js einige Erkenntnisse ohne eine starke Infrastruktur liefern).
16. Verstehen Sie anderen Open-Source-Bibliothekscode
Seien Sie sich bewusst, dass die Verwendung derselben Technologie in einem Projekt über einen längeren Zeitraum Ihre Vision einschränken und viele Alternativen verbergen kann. Versuchen Sie also, mehr über andere Projekte zu erfahren, hauptsächlich über erfolgreiche Open-Source-Projekte.
17. Vertiefen Sie Ihr Verständnis des Linux-Betriebssystems und konzentrieren Sie sich dabei auf Linux-Prozessaspekte
Das Verständnis des Linux-Prozesses wird Ihnen einen echten Wettbewerbsvorteil verschaffen, da er viele Entwicklungsaufgaben wie Überwachung und Schutz beeinflusst Prozesse ausführen, Docker verwenden, ordnungsgemäß herunterfahren und andere Aufgaben ausführen. Versuchen Sie, Prozesse, Signale, Berechtigungsmodelle, allgemeine Befehle, Prozesstypen und mehr zu verstehen.
18. Erhalten Sie ein tieferes Verständnis der Interna von Node.js
Mir gefällt wirklich, was Ryan Dahl (ursprünglicher Autor von Node.js) gesagt hat: „Man kann nicht alles verstehen, aber man sollte es Get lassen.“ das System selbst kennen.“ Ein tiefes Verständnis der zugrunde liegenden Maschine erweist sich als wertvoll, wenn Sie Produktionsprobleme bewältigen oder einige Infrastrukturkomponenten entwerfen müssen, z. B. die Überwachung der Leistung der Ereignisschleife. Möglicherweise sind Sie bereits mit Kernbausteinen wie v8 und libuv vertraut.
2019 ist also ein guter Zeitpunkt, um mehr über Node.js zu erfahren. Was passiert beispielsweise genau in jedem libuv-Ereignisschleifenzyklus? Oder vielleicht verstehen, wie die Interaktion mit dem Betriebssystem-IO funktioniert (z. B. Aktivitätshandles)?19. Lernen Sie, die wissenschaftliche Methode anzuwenden
Was Sie lernen und verinnerlichen, wird Ihre zukünftige Karriere prägen. Allerdings verfügen viele Entwickler weder über Lernstrategien noch haben sie gelernt, wissenschaftliche Methoden für effektives Lernen einzusetzen.
In einer Besprechung zum Thema „Verhindern von JavaScript-Typfehlern“ bat der Vizepräsident darum, weiterhin JavaScript zu verwenden, ohne die gesamte Codebasis umzugestalten (ohne TypeScript zu verwenden...), und plötzlich schlug einer Ihrer Kollegen die Verwendung von Facebook Flow, Everyone, vor im Zimmer vereinbart! Du erinnerst dich plötzlich daran, dass du schon einmal einen Artikel darüber gesehen hast, aber dieser wurde von dir nie verinnerlicht, sondern ging dir nur durch den Kopf. Was ist los? Anscheinend gibt es ein Phänomen namens „Illusion des Wettbewerbs“, das erklärt, warum wir diese Dinge vergessen: Man verbringt vielleicht eine Stunde damit, einen Blogbeitrag zu lesen, erinnert sich aber innerhalb weniger Tage nicht mehr daran! Untersuchungen zeigen, dass Sie Ihren Gedächtniserfolg erheblich verbessern können, wenn Sie später versuchen, mit jemandem über diese Dinge zu sprechen oder die Artikelzusammenfassung am nächsten Tag noch einmal zu lesen. Natürlich gibt es noch verschiedene andere Techniken, die Ihnen helfen können, sich das richtige Wissen zur richtigen Zeit zu merken und anzueignen. Ein paar Stunden damit zu verbringen, das Lernen zu erlernen, kann sich für Ihre Karriere enorm auszahlen!Das obige ist der detaillierte Inhalt vonWie man 2019 ein besserer Node.js-Entwickler wird. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!