Warum ist das Erlernen von Angular 2 so schmerzhaft?

Vor ein paar Monaten habe ich beschlossen, Webentwicklung auszuprobieren.. Angular 2 war damals brandneu, also beschloss ich, es herunterzuladen und begann mit dem Aufbau einer Website. Für jemanden, der ursprünglich Java-Entwickler ist, war dies eine neue und interessante Erfahrung. Ich folgte der berühmten „5-Minuten-Schnellstartanleitung“ und nach anderthalb Stunden des Kampfes mit Angular 2 und seiner Fülle von Abhängigkeiten hatte ich etwas am Laufen..
Dann fing ich an, eine richtige App zu bauen. Ich habe mich entschieden, eine Blogging-Plattform von Grund auf neu aufzubauen, hauptsächlich um zu lernen, und auch, weil ich schon seit Ewigkeiten einen Blog starten wollte. Der Wunsch, einen Blog zu haben, wäre das Zuckerbrot, das mich motivieren würde, neue Technologien zu lernen, und es mir ermöglichen würde, mein Projekt aufzubauen.
Monat für Monat verfolgte ich die Veröffentlichungen von Angular 2 und jedes Wochenende trottete ich durch den Blog. Habe ich schmerzhaft gesagt? Ich wollte eigentlich immer wieder sagen „mit dem Kopf gegen die Wand schlagen“ und versuchen, das sehr gruselige JavaScript-Ökosystem zu verstehen und zu beherrschen.
Vielleicht bin ich nur an Java-Bibliotheken gewöhnt, deren Robustheit langsam auf dem Schlachtfeld getestet wurde… Vielleicht ist das Erlernen der Webentwicklung beginnend mit Angular 2 wie der Versuch, ein Videospiel zu lernen, das sofort mit dem Hardcore-Modus beginnt… Ich weiß es nicht.
Ich weiß nur, dass die Veröffentlichung von Angular 2 aus meiner Sicht als Java-Ingenieur eine super gruselige Katastrophe war. Jede Nebenversion hat viele Breaking Changes vorgenommen. Jedes Mal, wenn ich den verdammten „5-Minuten-Schnellstart“ wieder angeschaut habe, hatte das nichts damit zu tun. Ganz zu schweigen vom Router Angular 2. Es war ein echtes Fiasko, eine Qual für Benutzer, insbesondere für diejenigen, die nicht an die Javascript-Welt gewöhnt sind.
Ich schreibe diesen Beitrag in einem Moment der Leidenschaft und schimpfe über die neueste Version von Angular, die vor ein paar Tagen angekündigt wurde. Angular 2 wurde dieses Mal endgültig veröffentlicht, und Sie können ein Upgrade durchführen, ohne mindestens 6 Monate lang mit drastischen Änderungen rechnen zu müssen ! So dachte ich naiv, dass ich meinen Blog von @angular 2.0.0-rc.4 auf @angular 2.0.0 aktualisieren sollte.
Hier ist das Epos, das ich gelebt habe:

  1. Aktualisieren Sie auf @angular 2.0.0
  2. Entfernen Sie alle 'Direktiven'-Felder aus meinen Komponenten. Anscheinend hat Angular2 entschieden, dass Module der beste Weg sind.
  3. Löschen Sie alle Importe, die mit _DIRECTIVES enden.
  4. Aktualisieren Sie @angular/forms von 0.3.0 auf 2.0.0. Aus irgendeinem Grund war @angular/forms in Bezug auf die Veröffentlichung weit hinter dem Rest von Angular zurück. Bis zu dieser Veröffentlichung.
  5. Aktualisieren Sie angle-material auf 2.0.0-alpha.8–2 (ist Ihnen klar, wie lächerlich es ist, eine Version namens 2.0.0-alpha.8–2 zu haben?).
  6. Upgrade auf Typoskript 2.o, das, und das war eine schlechte Überraschung für mich, derzeit in der Beta-Phase ist. Nachdem ich endlich eine relativ stabile Version in Angular erreicht habe, ist es erschreckend festzustellen, dass Angular-Material, ein Schlüsseltool in meinem Stack, auf instabile Abhängigkeiten angewiesen ist, die den Abhängigkeiten von Angular voraus sind.

Zu diesem Zeitpunkt funktionierte 'npm start'. Jetzt wird es schwierig, weil ich mich mit außerordentlich obskuren Fehlermeldungen auseinandersetzen musste, die mich plagen, seit ich angefangen habe, Angular 2 zu lernen. Wie diese hier:
01
02
 
Nach einiger Fehlerbehebung (ich bin seitdem ziemlich gut darin geworden, unnötige System JS-Fehlermeldungen zu entschlüsseln), kam das Problem von dieser fehlerhaften Zeile in meiner Datei systemjs.config.js:
// No umd for router yet
packages['@angular/router'] = { main: 'index.js', defaultExtension: 'js' };
Ich denke, @anguler/router hat jetzt UMD. Was auch immer das ist UMD.........
Das nächste Problem, auf das ich gestoßen bin, war folgendes:
03
04
 
Toll! Ein sehr gruseliger Syntaxfehler in einem kantigen Material. Es gibt keine nützliche Fehlermeldung oder Zeilennummer. Keine Hilfe, um mich zu führen. Ich weiß nicht, ob ich Abhängigkeiten aktualisieren oder herabstufen, neue installieren, die Syntax meiner tsconfig.js-Datei ändern soll (die sich wahrscheinlich geändert hat, als ich auf Typoskript 2.0 aktualisiert habe). Ich bin verloren in einem Meer aus Verwirrung und Frustration.
Nun, das ist wahrscheinlich für diejenigen unter Ihnen, die erfahrene Webentwickler sind, leicht zu beheben. Da komme ich nicht her. Es ist nicht dieser spezielle Fall. Es ist die Tatsache, dass das JavaScript-Ökosystem ein absolutes Chaos ist.
Jede neue Version jeder neuen Bibliothek bringt viele radikale Änderungen mit sich. Neue Bibliotheken werden veröffentlicht, bevor ihre APIs stabilisiert sind. Beta-Bibliotheken sind veraltet und nur Alpha-Bibliotheken sind neu und interessant.

Auf Stackoverflow sind Beiträge, die 6 Wochen alt sind, alt und relevanter, weil sie Probleme mit einer alten Version ansprechen, die ich nicht mehr verwende.

Der Java-Ingenieur, der ich bin, ist wütend auf dieses Ökosystem. In welchen Wahnsinn ist die Webentwicklung versunken? Was zum Teufel ist heutzutage mit Javascript los???
Okay, ich denke, es ist an der Zeit, einen Schritt zurückzutreten und zu sagen, dass ich Angular 2 wirklich liebe. Sobald alle Abhängigkeiten aktualisiert wurden und alles funktioniert, weist Intellij darauf hin, dass dies der Fall sein sollte, und mein Typescript-Compiler funktioniert gut , Angular 2 ist genial.
Um ehrlich zu sein, habe ich Versionen von Bibliotheken verwendet, die noch nicht offiziell veröffentlicht wurden. Vielleicht würden Sie sagen, dass es meine Schuld ist, wenn ich versuche, eine Version der Bibliothek herunterzuladen und zu verwenden, die sich noch in der Alpha-/Beta-/Release Candidate-Phase befindet, und erwarte, dass sie funktioniert und einfach zu verwenden ist. wahrscheinlich hättest du recht. Aber wenn wir das bedenken Hunderttausende von Entwicklern bereits Angular 2 verwenden, sollten wir uns die Frage stellen: Ist es wirklich verantwortungsvoll, Bibliotheken zu veröffentlichen, die noch in Arbeit sind? Macht es Sinn, einen Release Candidate anzukündigen und dann tonnenweise drastische Änderungen auf dem Weg von rc.1 zu rc.6 vorzunehmen?
Wie viele Hunderttausende von Stunden menschlicher Arbeit wurden beim Versuch verschwendet, eine Version von Angular 2 und all seine Abhängigkeiten zu aktualisieren? Und wie die meisten Ingenieure bestätigen werden, sind Entwicklerstunden auf dem heutigen Arbeitsmarkt ein wertvolles Gut. Wie viele Entwickler waren von der Erfahrung, Angular 2 zu verwenden, völlig enttäuscht und haben geschworen, Angular zugunsten von React aufzugeben? Wie viele andere herumliegende JavaScript-Bibliotheken haben ihren Benutzern Kopfschmerzen und Ängste bereitet?
Vielleicht erlebt das JavaScript-Ökosystem seine ersten Wachstumsschmerzen. Vielleicht finden die Entwickler die Fehler in ihrem ursprünglichen Design heraus und arbeiten hart daran, sie bei jeder Iteration zu korrigieren, um jedes Mal bessere Versionen zu produzieren.
Vielleicht wird die große Mehrheit der Entwickler bald in der Javascript-Welt leben, da sich die Werkzeuge schnell und effizient entwickelt haben.. Vielleicht erreichen die Leute mit JavaScript mehr und in JavaScript geschriebene Tools sind einfacher zu verwenden als in anderen Sprachen geschriebene ...
Oder vielleicht, vielleicht wird die Javascript-Welt eine Art Scherz sein, ein Ort, an dem Hipster-Ingenieure ihre Zeit verschwenden und sich fühlen, als wären sie auf dem neuesten Stand der Innovation, während sie in Wirklichkeit in einem chaotischen und verrückten Universum herumschwirren Stunden um Stunden Produktivität aus dem Fenster, nur damit Sie die neuesten und coolsten Tools da draußen verwenden können.
Aber ich bin nur ein bescheidener Java-Entwickler.
Was mich am meisten interessiert ist, was denkst du?
Originalartikel de Liz Bennett
Übersetzt von JS Staff
[separator type=““ size=““ icon=“star“] [actionbox color=“default“ title=““ description=“JS-REPUBLIC ist ein auf JavaScript-Entwicklung spezialisiertes Dienstleistungsunternehmen. Wir sind ein anerkanntes Ausbildungszentrum. Alle unsere technischen Schulungen finden Sie auf unserer Partnerseite für Schulungen“ btn_label=“Unser Training“ btn_link=“http://training.ux-republic.com“ btn_color=“primary“ btn_size=“big“ btn_icon=“star“ btn_external ="1"]