Frage

Derzeit ist JavaScript die einzige vollständig unterstützte Sprache und der De-facto-Standard für die DOM-Baummanipulation im Browser.Es sieht so aus, als ob es schwerwiegende Designprobleme aufweist, die es für Anfänger zu einem Minenfeld voller Fehler und Sicherheitslücken machen.

Kennen Sie eine bestehende oder geplante Initiative zur Einführung einer besseren (neu gestalteten) Sprache jeglicher Art (nicht nur Javascript) für die DOM-Baummanipulation und HTTP-Anfragen in Browsern der nächsten Generation?Wenn ja, wie sieht die Roadmap für die Integration beispielsweise in Firefox aus, und wenn nein, aus welchen Gründen (abgesehen von der Interoperabilität) sollte JavaScript die einzige unterstützte Sprache auf der Browserplattform sein?

Ich habe jQuery bereits verwendet und auch „Javascript:“ gelesen.die guten Teile".Die Vorschläge sind zwar gut, aber was ich nicht verstehen kann, ist:Warum nur Javascript?Auf der Serverseite (Ihrer bevorzugten Betriebssystemplattform) können wir einen DOM-Baum mit jeder Sprache bearbeiten, sogar mit Fortran.Warum unterstützt die Clientseite (die Browserplattform) nur Javascript?

War es hilfreich?

Lösung

Das Problem mit Javascript ist nicht die Sprache selbst - es ist eine ganz gute prototypische und dynamische Sprache. Wenn Sie von einem OO Hintergrund kommen gibt es ein bisschen eine Lernkurve, aber es ist nicht die Schuld der Sprache.

Die meisten Menschen gehen davon aus, dass Javascript wie Java ist, weil es ähnliche Syntax und einen ähnlichen Namen hat, aber eigentlich ist es viel mehr wie Lisp. Es ist eigentlich ziemlich gut zu DOM-Manipulation geeignet.

Das eigentliche Problem ist, dass es durch den Browser kompiliert, und das bedeutet, dass es in eine ganz andere Art und Weise arbeitet auf dem Client abhängig.

ist nicht nur der tatsächliche DOM unterschiedlich, je nach Browser, aber es gibt einen großen Unterschied in der Leistung und Layout.


Bearbeiten folgende Klarstellung in Frage

Nehmen wir an mehrere interpretierte Sprachen unterstützt wurden - immer noch die gleichen Probleme haben. Die verschiedenen Browser immer noch fehlerhaft sein würden und haben unterschiedlichen Dom.

Darüber hinaus müssten Sie einen Dolmetscher in den Browser eingebaut haben oder irgendwie als Plug installiert (das Sie überprüfen können, bevor Sie die Seite serviert) für jede Sprache. Es dauerte eine Ewigkeit Javascript in Einklang zu bringen.

Sie können nicht kompilierten Sprachen in der gleichen Art und Weise nutzen - dann sind Sie eine ausführbare Datei einzuführen, die für nicht leicht geprüft werden kann, was es tut. Viele Benutzer wählen würde, nicht laufen zu lassen.

OK, so was ist eine Art Sandbox für den kompilierten Code? Klingt wie Java-Applets zu mir. Oder Actionscript in Flash. Oder C # in Silverlight.

Was ist eine Art von IL-Standard? Das hat mehr Potenzial. Entwickeln Sie in welcher Sprache Sie wollen und dann kompilieren sie IL, die der Browser dann JITs.

Außer Javascript ist eine Art schon, dass IL - schauen Sie unter GWT . Damit können Sie Programme in Java schreiben, sondern verteilen sie als HTML und JS.


Bearbeiten folgende weitere Klärung in Frage

Javascript nicht oder eher nicht wurde, ist die einzige Sprache, die von Browsern unterstützt: zurück in den dunklen Zeiten Internet Explorer Sie zwischen Javascript oder VBScript ausführen in IE wählen könnten. Technisch IE nicht einmal Javascript laufen - es lief JScript (in erster Linie zu vermeiden, dass Sun bezahlen das Wort java , Oracle besitzt immer noch den Namen Javascript ).

Das Problem war, dass VBScript Microsoft proprietäre war, sondern auch, dass es war einfach nicht sehr gut. Während Javascript wurde Funktionalität hinzufügen und Top-Rate Debugging-Tools in anderen Browsern (wie Firebug) VBScript blieb IE-only und so ziemlich un-debug (dev Tools in IE4 / 5/6 waren keine vorhanden) zu bekommen. VBScript wird auch ein ziemlich leistungsfähiges Scripting-Tool in dem O erweiterte Inzwischen aber keines dieser Features im Browser verfügbar war (und wenn sie waren wurden sie massive Sicherheitslücken).

Es gibt noch einige Firmen-interne Anwendungen gibt, die VBScript verwenden (und einige verlassen sich auf diese Sicherheitslücken), und sie laufen noch IE7 (sie nur gestoppt IE6 weil MS schließlich abgetötet).

Erste Javascript es aktuelle Zustand ist ein Alptraum gewesen und hat 20 Jahre gedauert. Es hat immer noch nicht konsequent unterstützt, mit Sprachfunktionen (1999 angegeben) noch von einigen Browsern fehlt und vielen Beilagen erforderlich ist.

Hinzufügen einer anderen Sprache für in Browsern Interpretation steht vor zwei großen Problemen:

  • Getting alle Browser-Hersteller die neue Sprache Standard zu implementieren -. Etwas, das sie haben in 20 Jahren für Javascript noch nicht geschafft,

  • Eine zweite Sprache schwächt möglicherweise die Unterstützung, die Sie bereits haben, so dass (zB) IE zweite Rate muss Javascript aktiviert hat aber großen VBScript (wieder). I-Code in verschiedenen Sprachen wirklich nicht will, für verschiedenen Browser zu schreiben.

Es sollte nicht seined dass Javascript nicht ‚fertig‘ ist - noch hat sich entwickelnden in neuen Browsern besser zu werden. Die neueste Version ist Jahre voraus der Browser Implementierungen und sie auf dem nächsten zu arbeiten.

Andere Tipps

In Javascript kompilieren

Derzeit scheint die Verwendung einer Sprache, die sich mit Javascript kompilieren lässt, die einzig realistische Möglichkeit zu sein, alle Plattformen zu erreichen und gleichzeitig intelligenteren Code zu schreiben, und das wird wahrscheinlich auch noch lange so bleiben.Bei jedem neuen Angebot wird es immer einen Grund geben, warum einer oder mehrere Anbieter sich nicht beeilen, es zu versenden.

(Aber ich glaube nicht wirklich, dass das ein Problem ist.Javascript ist mittlerweile gut optimiert.Maschinencode ist ebenfalls unsicher, wenn er von Hand geschrieben wird, funktioniert aber gut als Kompilierungsziel und Ausführungssprache.)

So viele Möglichkeiten

Es gibt einen ständig wachsenden Pool an Sprachen, die zu Javascript kompiliert werden können.Eine ziemlich umfassende Liste finden Sie hier:

Bemerkenswert

Ich werde einige erwähnen, die ich für bemerkenswert halte (wobei ich zweifellos einige Juwelen vernachlässige, die mir nicht bekannt sind):

  • Spinne erschien im Jahr 2016.Es behauptet, die besten Ideen von Go, Swift, Python, C# und CoffeeScript zu übernehmen.Es ist nicht typsicher, hat aber einige Nebenfunktionen Sicherheitsvorrichtungen.

  • Ulme:Haskell könnte der sein klügste Sprache von allen, und Elm ist eine Variante von Haskell für Javascript.Es ist sehr typbewusst und prägnant und bietet Funktionale reaktive Programmierung als nette Alternative zu reaktiven Vorlagen oder MVC-Spaghetti.Aber es kann durchaus sein ein Schock für prozedurale Programmierer.

  • Googles Gehen ist auf Prägnanz, Einfachheit und Sicherheit ausgerichtet.Go-Code kann von in Javascript kompiliert werden GopherJS.

  • Pfeil war Googles späterer Versuch, Javascript zu ersetzen.Es bietet Schnittstellen und abstrakte Klassen über eine C/Java-ähnliche Syntax mit optionaler Typisierung.

  • Haxe ist wie Flashs ActionScript, kann es aber auf mehrere Sprachen abzielen So kann Ihr Code in Java-, C-, Flash-, PHP- und Javascript-Programmen wiederverwendet werden.Es bietet typsichere und dynamische Objekte.

  • Opalang Fügt Javascript syntaktischen Zucker hinzu, um es bereitzustellen Direkter Datenbankzugriff, intelligente Fortsetzungen, Typprüfung und Unterstützung bei der Client/Server-Trennung.(An NodeJS und MongoDB gebunden.)

  • GorillaScript, „Eine in JavaScript zu kompilierende Sprache, die den Benutzer befähigen und gleichzeitig versuchen soll, einige häufige Fehler zu vermeiden.“ ähnelt Coffeescript, ist jedoch umfassender und bietet eine Reihe zusätzlicher Funktionen, um die Sicherheit zu erhöhen und sich wiederholende Standardmuster zu reduzieren.

  • LiteScript liegt irgendwo zwischen Coffeescript und GorillaScript.Es bietet Async/Yield-Syntax für „Inline“-Rückrufe und prüft auf variable Tippfehler.

  • Microsofts Typoskript ist eine kleine Obermenge von Javascript, mit der Sie Typbeschränkungen für Funktionsargumente festlegen können, was zu einigen Fehlern führen kann.Ähnlich BetterJS ermöglicht Ihnen die Anwendung von Einschränkungen, allerdings in reinem Javascript, entweder durch das Hinzufügen zusätzlicher Aufrufe oder durch die Angabe von Typen in JSDoc-Kommentaren.Und jetzt hat Facebook angeboten Fließen die zusätzlich eine Typinferenz durchführt.

  • LiveScript ist ein Spin-off von Coffeescript, das wegen seiner Kürze beliebt war, für mich aber nicht sehr lesbar erscheint.Wahrscheinlich nicht das Beste für Teams.

Wie man wählt?

Wann wählen Eine alternative Sprache gibt es Zu berücksichtigende Faktoren:

  • Wenn in Zukunft andere Entwickler Ihrem Projekt beitreten, wie lange wird es dauern, bis sie sich einarbeiten und diese Sprache lernen, oder wie groß ist die Wahrscheinlichkeit, dass sie sie bereits kennen?

  • Verfügt die Sprache über zu wenige Funktionen (der Code wird immer noch voller Standardbausteine ​​sein) oder zu viele Funktionen (die Beherrschung wird lange dauern, und bis dahin ist möglicherweise ein gültiger Code nicht zu entziffern)?

  • Verfügt es über die Funktionen, die Sie für Ihr Projekt benötigen?(Benötigt Ihr Projekt Typprüfung und Schnittstellen?Braucht es intelligente Fortsetzungen, um die Hölle verschachtelter Rückrufe zu vermeiden?Gibt es viel Reaktivität?Müsste es in Zukunft möglicherweise auf andere Umgebungen abzielen?)

Die Zukunft...

Jeff Walker hat geschrieben eine zum Nachdenken anregende Serie von Blog-Beiträgen über „das Javascript-Problem“, einschließlich der Gründe, warum er weder das eine noch das andere denkt Typoskript, noch Pfeil noch Kaffeeskript adäquate Lösungen anbieten.Er schlägt einige wünschenswerte Funktionen für eine verbesserte Sprache vor der Abschluss.

  

sollte JavaScript, um die einzige unterstützte Sprache auf der Browser-Plattform sein?

Ja und nein. Es gibt eine Alternative gibt, Dart von Google genannt, die JavaScript nicht kompiliert und wie jQuery versucht es DOM-Manipulation ein bisschen leichter zu machen. Es kann sein, Spaß zu experimentieren, check it out.

Siehe auch

Es ist wahr, dass Javascript in einem Punkt notorisch schwer war, zu beschäftigen, aber die Web-Entwickler-Community hat mich seit einem langen Weg gekommen. Stattdessen würde ich Sie ermutigen, einen Blick haben unter jQuery . Es ist einfach und abstrahiert alle verschiedene Probleme auf.

Und es gibt wirklich keine Alternativen, die auf der ganzen Linie zu arbeiten. Blitz in den Sinn kommt, aber auch das ist Skript ECMA und es ist wahrscheinlich über für die meisten Dinge töten.

Kurzfristig würde ich Dinge wie jQuery verwenden, um die Browser-Inkompatibilitäten zu verbergen. Langfristig Technologien wie Silverlight oder Adobe AIR können dies ein ganz anderes Minenfeld (aber immer noch ein Minenfeld) in der Zukunft machen.

Doug Crockford referierte zu Google Detaillierung schlechte und gute Teile von JavaScript und seiner Zukunft. Es hat sich eigentlich nicht viel überhaupt seit 1999 geändert - was gesagt werden kann, eine gute Sache (so ziemlich alle Browser den gleichen Code wie lange laufen können, wie Sie ihrer Grenzen bewusst sind) zu sein, und Doug zeigt, wo die guten Teile waren meist Missverständnisse, die sehr mächtig erweisen.

Für DOM manipuluation, Blick auf JQuery als clientseitige Bibliothek, die mit Operationen der meisten des schrecklichen DOM API ersetzt, die einen Schmerz zu schreiben, ziemlich elegant Bit-Code, der einfacher zu schreiben sind.

Wenn Sie denken, dass JavaScript tiefe Probleme hat, empfehle ich Doug Crockford Buch JavaScript : The Good Parts . (Oder Google für „Crockford JavaScript“ mehrere Videopräsentationen zu finden, die er getan hat.) Crockford skizziert eine sichere Teilmenge und die Praktiken festgelegt, und listet speziell einige Teile der Sprache zu vermeiden.

Ich bin nicht bewusst Pläne JavaScript als die de facto ersetzen bedeutet, den DOM zu manipulieren. Also am besten lernen, es sicher zu bedienen und gut.

In Bezug auf dem Client-Seite Javascript ist der einzige Weg, um das DOM zu manipulieren. In Bezug auf die Serverseite gibt es eine Vielzahl von Möglichkeiten.

Internet Explorer unterstützt steckbare Skriptsprachen, obwohl der einzige zuverlässig mit IE neben JScript enthalten ist VBScript.

Was ich gesehen habe, scheint es im Browser eine allgemeine Art von Voreingenommenheit gegenüber dynamischen Sprachen zu sein, und JavaScript scheint dieses Bedürfnis ausreichend genug, dass Netzwerkeffekte eine andere Sprache eines Rohrkrepierer machen zu füllen. Die Sprache ist tatsächlich sehr mächtig, obwohl seine Umsetzung in Browsern lässt viel zu wünschen übrig.

Wenn Sie bereit sind, Ihre Kunden / Besucher auf bestimmten Browser zu beschränken und möglicherweise bereit, sie benötigen ein Plug-in zu installieren, müssen Sie unter MS Silverlight - eine lesbare Übersicht finden Sie auf wikipedia . Mit Silverlight 2, können Sie ausführen, clientseitige Code in C # geschrieben haben, Ironpython, IronRuby, VB.NET, etc; das kostenlose Moonlight Klon von Silverlight, aus dem Mono-Projekt verspricht die gleiche Funktionalität zu Linux bringen .

In der Praxis die meisten Entwickler von Web-Anwendungen und Websites bevorzugen ein breiteres Publikum als Silverlight zu erreichen (und schließlich Moonlight) kann zur Zeit liefern - was bedeutet, mit Javascript kleben oder möglicherweise Flash (die eine ähnliche Programmiersprache verwendet, Actionscript).

So gewinnt erhebliche Marktbedeutung, Annahme und Traktion für etwas anderes erweist dich mit seinen großen Gruppen von Ingenieuren und Marketing-Budget einen harten Kampf auch für Microsoft sein und ein Projekt frei Software auf der Seite (möglicherweise zu lindern Sorgen über proprietäre Lock-in) - was erklären könnte helfen, warum es sehr wenig Interesse, zB auf Seiten der Mozilla Foundation, zu einem solchen Ziel schieben. „Neben der Interoperabilität“, sagen Sie: aber eindeutig die Frage der Interoperabilität ist die Biggie hier gegeben, was wir WRT Silverlight die Fortschritte beobachten ...

Wie bereits gesagt, Sie Flash (Actionscript, das ist eine abgeleitete Sprache von Javascript) haben und Silverlight / Moonlight (Ironpython, IronRuby, JScript, VBScript, C #), die im Browser über Plugins (die ersten viel zu sein laufen kann allgegenwärtige).

Es gibt auch eine andere Alternative, wenn Sie wie Ruby: HotRuby , es ist eine Ruby-Implementierung in Javascript, das wird läuft im Browser. Es ist nicht sehr ausgereift noch, aber Sie können einen Blick auf sie haben.

Eine Sache, ich habe nicht erwähnt gesehen (oh, ich sehe Alcides HotRuby erwähnt, während ich schreibe und Nosredna erwähnt GWT und Script #) und möchte dort werfen ist, gibt es eine Reihe von Implementierungen von [Sprache] -on-JavaScript (zB Übersetzer, die Ihnen erlauben zu konvertieren Rubin , Python , C # , Java , Obj-J / Cappuccino [ähnlich wie Obj-C / Cocoa] oder Verarbeitung [für Canvas] zu JavaScript ist entweder auf dem Client oder vor der Bereitstellung [und einige davon verfügen über verschiedene Abstraktionsbibliotheken]). Natürlich ist ein Performance-Overhead gibt es, wenn es auf dem Client übersetzt wird, aber wenn Sie sich wohler mit einer anderen Sprache sind, wird es Ihnen eine gewisse Flexibilität ermöglichen.

Persönlich, obwohl, ich empfehle das Lernen JavaScript zu lieben. Es ist eine ausgezeichnete, leistungsfähige Sprache und ziemlich elegant, wenn Sie es kennen zu lernen. Ich bin das Gegenteil Dilemma, an der Zunge zergehen einen fähigen serverseitige JavaScript / DOM-Lösung zu haben, die alle meine Anforderungen erfüllt. / Unaufgeforderte Meinung

Nein. JavaScript ist es, aber es wird sich entwickeln. Die nächste Version ist „JavaScript-Harmony“, und Sie können mehr lernen, wenn Sie, dass Google.

Jetzt und dann schlägt jemand ein Byte-Code-Interpreter in die Browser neben JavaScript setzen. Wahrscheinlich wird nicht passieren, zumindest für eine Weile.

Ich bin zufällig JavaScript lieben. Aber es gibt andere Lösungen, einschließlich GWT, die Java zu JavaScript und Script # kompiliert, die C # zu JavaScript kompiliert wird.

JQuery (noch Javascript aber) es wird Ihnen wirklich helfen, die Unterstützung für sie haben fast alle Browser und es ist nicht wirklich so schwer zu lernen:)

JavaScript ist die englische Sprache der Bahn. Englisch historisch verbreitet, weil es eine starke Marine erobert verschiedene Länder. Dies ist vergleichbar mit großen Unternehmen, die das Web mit JavaScript erobert. Es ist eine Sprache clobbered zusammen aus mehreren europäischen Quellen (Griechisch, Latein, germanischen Sprachen, Französisch sogar einige chinesische und indische Wörter). JavaScript entlehnt viele Konzepte im Laufe der Jahre aus anderen Sprachen (strukturelle, OO, funktional). Englisch wird an verschiedenen Orten mit leichten Variationen in Dialekt und Akzent gesprochen, die das Verständnis erschweren kann. Genau wie JavaScript verschiedenen Browsern es ein bisschen anders zu interpretieren hat.

Auch wenn Englisch ist einfach am Anfang zu lernen, hat es sehr inkonsistent Aussprache und mehr Ausnahmen als Regeln. Genau wie JavaScript ist es immer eine Überraschung zu bieten.

Trotz der unterschiedlichen Akzenten, ist JavaScript die lingua franca der Bahn. Genau wie Sie nicht Englisch sein könnten und schreiben Sie hier in englischer Sprache hat jeder Web-Browser ein gewisses Maß an Verständnis Englisch. IE6 ist wie der Typ, der auf seinem Lebenslauf sagt, dass er fließend ist, aber nur ging zu einem zweiwöchigen Kurs auf Englisch als Fremdsprache.

Es gibt Versuche, Englisch zu verdrängen, wie die Welten Hauptsprache, z.B. Esperanto. Aber sie alle scheiterten, weil die meisten Menschen auf der Erde ein wenig Englisch sprechen. In gleicher Weise wird es schwierig sein, bessere Alternativen zu JavaScript einzuführen.

Ich glaube nicht, dass Javascript in absehbarer Zeit ersetzt werden. Für einen völlig anderen Ansatz für Rich-Clients, können Sie Flex untersuchen, die eine Flash-basierte Technologie ist.

Vielleicht so etwas wie haxe (haxe.org sehen) könnte Ihnen helfen. Es ist eine Sprache, die sauberen als JavaScript scheint und kann bis zu JavaScript kompiliert werden, so kann es in einem Browser ausgeführt werden.

Ich weiß, dass dies nicht eine direkte Antwort auf Ihre Frage, aber ich dachte, es könnte für Sie, dennoch interessant sein.

Viele Menschen verstehen, dass Javascript ist nicht die beste und schönste Sprache überhaupt. Es wird jedoch derzeit von Browsern unterstützt, und so wird es extrem schwierig sein, eine andere Sprache einzuführen. Wir haben einfach nicht einen anderen Browser-Krieg brauchen.

Das erklärt, warum ich keine Pläne kenne zu einer anderen Client-seitige Sprache wechseln.

Aber ich denke, Javascript nicht so schlimm ist, wenn man über DOM-Modell beginnen zu denken und wie würde man mit ihm arbeiten. Viele Dinge, die unordentlich sind mit JS sind das Ergebnis der Art und Weise DOM-Modell funktioniert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top