Ich werde ein Update hinzufügen, da ich denke, dass JS im Laufe der Jahre in einigen wichtigen Punkten missverstanden wurde.
Es war nicht Ajax
Ich sage nicht, dass Ajax für die Entwicklung des Verständnisses von JS als Sprache nicht wichtig war, aber der Kampf um die Dominanz der clientseitigen Browser war lange bevor der Begriff Ajax geprägt wurde vorbei.
Es war nicht, weil es das einzige Spiel in der Stadt war
Es gab Java Applets, Flash und VBScript. Ich habe gehört, dass es in den 90er Jahren sogar andere Skriptoptionen gab (aber erforderliche Plug-Ins IIRC). Java ist sehr beliebt, aber Applets waren ein düsterer Fehler. Sie waren hässlich und oft Schweizer Sicherheitskäse, aber was noch wichtiger ist, ich glaube nicht, dass Java aus Gründen, auf die ich später eingehen werde, gut passt. Flash war sehr beliebt und hatte jahrelang einen starken Einstieg, aber selbst als Flash endlich über SEO-Optionen verfügte, wurden diese normalerweise nicht verwendet, sodass es sehr schwierig war, ausschließlich Flash-Websites zu entdecken. Selbst jetzt aktualisieren die meisten von uns regelmäßig Flash, damit wir Filme sehen können, aber das ist die wahre Achillesferse. Proprietäre Technologie in Browsern ist ärgerlich. Und natürlich VB, das würde immer nur mit IE funktionieren, also nein.
Der richtige Ort zur richtigen Zeit ist wichtig, aber nicht die vollständige Antwort
Ja, ohne die zu fahrende Web-Welle hätten wir möglicherweise nie so schnell JavaScript oder eine Sprache in der gängigen Verwendung gesehen. Oder vielleicht hätten wir ...
Es war das perfekte Werkzeug für die Problemdomäne
Ich würde sagen, um 2000 herum hatten wir folgende Probleme:
- IE und Netscape hatten sich gerade darauf geeinigt, sich mit den gleichen DOM-API- und CSS-Standards anzufreunden, und wir mussten uns seitdem mit einer Menge älterer JS-Cross-Browser-Probleme auseinandersetzen, die gerade erst verwaltbar werden ohne die Hilfe von JS DOM-Normalisierungstools wie jQuery nach IE8
- Es gab eine ganz neue Generation von Webentwicklern / -designern, die nicht unbedingt alle Schwergewichte als Programmierer waren, die ihr Spiel nach dem Platzen der .com-Blase verbessern wollten, als sie aufhörten, Ihnen ein anständiges Gehalt zu zahlen, weil sie mit nichts anderem an der Tür aufgetaucht waren als grundlegende HTML-Kenntnisse und einige Photoshop-Kenntnisse.
- Es gab dieses neue CSS-Kind in der Stadt, das faszinierende Möglichkeiten für das bot, was letztendlich DHTML, (passender) DOM-Scripting, (jetzt unangemessen) HTML5 (zomghtml5!) Genannt wurde.
Wir brauchten also eine Sprache, die sowohl tiefgreifend war als auch die Möglichkeit bot, eine fortschrittlichere App mit tragbaren / wiederverwendbaren Komponenten auf der Clientseite zu strukturieren und zu entwickeln, die aber auch für Leute zugänglich war, die nicht viel wussten und nur Dinge brauchten wird angezeigt / wieder angezeigt, wenn Sie auf eine Schaltfläche geklickt haben.
Darüber hinaus war MS das unbeholfene / inkompetente und / oder dominante, wettbewerbsfeindliche Scharmützel, das sie manchmal sind, und konnte ihre nicht konforme DOM-API-Implementierung für ein gutes solides Jahrzehnt nicht wirklich berühren, obwohl sie es geschafft hatten Fügen Sie gelegentlich Dinge wie das ursprüngliche XHR-Objekt und querySelectors in IE8 hinzu.
Das Wichtigste ist, dass wir es um das Jahr 2005 geschafft haben, die Komplexität bei der Behandlung browserübergreifender Probleme so vollständig zu begraben, dass es im JavaScript-Bereich kein ernstes Problem mehr gab. Das Versagen, CSS2 so lange zu unterstützen, wie dies der Fall war, verursachte erheblich mehr Schmerzen. Ich empfehle, quirksmode.org zu besuchen, um eine Vorstellung von der Menge und Tiefe der Probleme zu bekommen . Ich denke nicht, dass dies eine Leistung ist, die in so vielen Java-Bibliotheken reibungslos und möglich gewesen wäre, schon gar nicht in VB und definitiv nicht mit einer Plug-In-Strategie, deren Ziel es ist, das gesamte Problem zu umgehen, indem man sich zu einem völlig neuen Produkt entwickelt Art von Belästigung.
Andere Sprachfunktionen, die für die Benutzeroberfläche sehr sinnvoll sind:
Erstklassige Funktionen: Nach meiner Erfahrung eignet sich nichts besser für asynchrone Verarbeitung und ereignisgesteuerte Paradigmen als eine Sprache, die ihre Funktionen erstklassig macht. Beide Anliegen werden regelmäßig in der UI-Arbeit angesprochen.
Dynamische Typen: Casting und Typprüfung sind in JavaScript sehr selten erforderlich, wodurch der Code übersichtlich und schlank bleibt. UI-Probleme können sehr schnell komplex und chaotisch werden. Um den Datenfluss zu verstehen und zu ändern / pflegen, ist es wichtig, dass der Code eng und absolut klar ist.
Es ist nicht protektionistisch: Seit vielen Jahren predigt jemand, dass Sie sich vor Ihren eigenen Fehlern und den dummen Dingen, die der andere mit Ihrem Code anstellen könnte, schützen müssen, indem Sie Code-Konstrukte sehr starr und unflexibel machen und sich nicht in die ursprüngliche Absicht einmischen geschrieben mit und viele Leute haben zugehört. Ich werde nicht sagen, dass sie immer falsch sind (ich denke es könnte sein), aber ich werde sagen, dass dies die falsche Herangehensweise an die Web-Benutzeroberfläche ist, und ich glaube, dass dies ein Phänomen ist, das wir ausgearbeitet, gepflegt und geändert haben. Neben-GUIs wurden in der Vergangenheit in der Regel in restriktiveren Sprachen viel schneller und einfacher ausgeführt als solche. Die schnelle und einfache Möglichkeit, Änderungen im laufenden Betrieb vorzunehmen, macht dynamische / fließende Architekturschemata, für die kein erheblicher Aufwand an Indirektion und Abstraktion erforderlich ist, wesentlich einfacher. Auf diese Weise können Sie leichter erkennen, was zur Hölle in Ihrem Code vor sich geht und Ausnahmen viel sauberer vorwegnehmen oder behandeln. Es ist einfacher, einfach durch die bloße Tugend aufrechtzuerhalten, die es ermöglicht, bei allem, was Sie tun, direkter und mit viel weniger Code zu sein, als dies nach der anderen Philosophie der Fall wäre.
Wie wurde JS populär? Es hat sich immer wieder als hervorragendes Werkzeug für den Job erwiesen. Es ist nicht die Sprache, an der wir "hängen bleiben". Es ist die Sprache, die möglicherweise einen großen Teil der Evolution in populären Sprachen im Allgemeinen inspiriert hat. Und dafür können Sie Brendan Eich und allen Zeitgenossen danken, die dazu beigetragen haben, die Idee in den Kopf zu bekommen, dass sie Scheme als Design-Inspiration für das vorliegende Problem mehr mochten, als er Java mochte.