Was sind die aktuellen Unterschiede zwischen jQuery und Prototype? [geschlossen]

8

Ich habe in den letzten Monaten eine Ruby-on-Rails-Site erstellt und nur ein paar eingebaute JavaScript-Funktionen verwendet. Allerdings werde ich in den kommenden Wochen und Monaten viel mehr JavaScript-Entwicklung betreiben und darüber debattieren, welches JavaScript-Framework dazu passt.

Auf der einen Seite scheint jQuery der populärere zu sein, aber andererseits ist Prototype bereits in Rails eingebaut. Ich habe auch eine Reihe von Artikeln online gelesen, die vor ein paar Jahren darüber sprachen, wie jQuery bei einigen Dingen prägnanter ist, bei anderen aber schlampig ist und verschiedene andere Meinungen gibt.

Meine Fragen richten sich also an die Leute, die beide (vorzugsweise kürzlich) :

benutzt haben
  • Was ist der Unterschied zwischen der Verwendung von Prototype und jQuery aus reinem JavaScript und aus der Perspektive von Ruby on Rails?
  • Gibt es einen signifikanten Unterschied zwischen ihnen oder sind sie jetzt in Bezug auf Funktionalität und Code-Schreiben ziemlich nah beieinander?
  • Wie hoch sind die Wechselkosten in Bezug auf Dinge, die re-larnt werden müssen, und Code, der neu geschrieben werden muss?

Danke

    
Daemin 14.01.2010, 13:27
quelle

4 Antworten

13

Vorherige Diskussion

Vieles, wenn nicht alle Fragen bereits besprochen wurden. Siehe die Suche oder:

Wechsel von Prototype zu JQuery

Ich bin gerade dabei, von Protoype auf JQuery umzusteigen, hauptsächlich aus Gründen der Performance (ich habe zu viele Benchmarks gesehen, wobei Prototype immer zuletzt zu JQuery, MooTools und Dojo kam.) Ich würde sagen, die Wechselkosten sind nicht schrecklich , weil die meisten grundlegenden Konzepte (Auswahl, Effekte, Ajax) sehr ähnlich sind. Allerdings muss jede Zeile des Prototype-Codes sorgfältig umgeschrieben werden - vor allem deshalb, weil viele Hilfsfunktionen und Konstrukte ( $ $$ ) täuschend ähnlich aussehen.

Wenn Ihr Code viele komplexe verkettete Konstrukte enthält, die möglicherweise auch in Jquery verfügbar sind, aber anders funktionieren, kann die Migration zu einer sehr umständlichen Aufgabe werden. Wenn Sie es nur für die schnelle $ () Elementauswahl, Effekte und ein wenig Ajax verwenden, nicht so sehr.

Sei in jedem Fall auf eine Phase intensiven Lernens vorbereitet. JQuery-Konstrukte sind klein und intelligent, aber sie sind schrecklich, IMHO zu lesen (und sehen im Vergleich zu einem Block von nativem Javascript gräßlich aus, aber das ist eine andere Diskussion). Es braucht definitiv Zeit, um sich mit der Syntax und den Prinzipien vertraut zu machen, wenn Sie von einem anderen Framework oder nativem Javascript kommen.

    
Pekka 웃 14.01.2010, 13:32
quelle
9

Pekkas Antwort ist großartig, aber eine Sache, die hinzugefügt werden sollte, ist, dass Rails sich stark in Richtung Javascript-Framework Agnostic bewegt. Obwohl Rails zum ersten Mal herauskam, war seine AJAX-Integration innovativ, die Javascript-Landschaft hat sich seither dramatisch verändert und die Rails-Integration entspricht nicht mehr den Best Practices. Daher sollte die Integration von Prototype auf Rails 2.3 nicht als ein wesentlicher Faktor angesehen werden, und dies wird in Rails 3.0 noch weniger ein Faktor sein, der wahrscheinlich in den nächsten Monaten veröffentlicht wird. Ich habe kürzlich einen interessanten Artikel gelesen, in dem einige der wichtigsten beschrieben werden Änderungen an der JavaScript-Integration von Rails in Jahren.

Mein aktuelles Projekt enthält tausende von Zeilen älteren Prototyp-Codes, aber wir haben kürzlich damit begonnen, jQuery zu verwenden, weil seine Vorteile zu groß waren, um es zu übergehen. Meine Eindrücke:

Prototype ist ein ausgereiftes Framework, das sehr gute Arbeit leistet, indem es Browserunterschiede unterstützt und sehr ausgereifte Funktionen bereitstellt. Leider ist es mit seinen Änderungen an der Standard-Javascript-Umgebung ein wenig unhandlich, und es sieht keine schnelle Entwicklung und hat kein signifikantes Plugin-Ökosystem.

jQuery ist ein neueres Framework, das in der Lage war, einige der Lektionen der frühen JavaScript-Frameworks wie Prototype zu nutzen, um etwas Modulares, weniger Aufdringliches, wesentlich Stärkeres und Prägnanteres zu schaffen. Ich liebe immer noch Prototype, aber jQuerys DOM-Manipulation und Plugin-Ökosystem ist einfach zu gut, um es nicht mehr zu ignorieren. Wenn ich ein Greenfield-Projekt starten würde, müsste ich mit jQuery gehen, weil das scheint, wo die Innovation stattfindet (zumindest zwischen diesen beiden Möglichkeiten).

    
gtd 15.01.2010 07:03
quelle
3

Es gibt einen großen Unterschied zu jQuery im Vergleich zum Prototyp. Sobald Sie sich an die Nuancen der Frameworks gewöhnt haben, können Sie ganz einfach zwischen ihnen wechseln.

Die größte Hürde am Anfang ist, dass Prototype sich sofort in das Dom einhakt. Sobald Sie es in die Seite aufnehmen, wird allen prototypischen Funktionen, die Sie nachschlagen, eine Prototypfunktionalität zugewiesen. Mit jQuery bleiben alle Elemente übrig, bis Sie mit dem jQuery-Selektor $ ('css-class') auf eins zugreifen. Für das Objekt, das Sie von diesem Aufruf zurückbekommen, sind die jQuery-Methoden angehängt.

Wenn Sie sich selbst in jQuery einarbeiten möchten, können Sie alles mit Hilfe des Prototyps lassen und jQuery hinzufügen und jQuery.noConflict(); Ссылка . Dadurch wird die Methode $ zurück zum Prototyp und Sie können jQuery verwenden, indem Sie stattdessen jQuery ('css-class') aufrufen.

Wenn Sie vollständig in jQuery einsteigen möchten, würde ich das jRails-Plugin ( Ссылка ) empfehlen. Es wird alle Rails Ajax Helper ersetzen und sie haben jQuery statt Prototyp. Ich habe dies in einer Reihe von Projekten getan und hatte nie Probleme.

Am Ende sollten Sie nur einen Blick auf Prototyp und jQuery werfen und sehen, welcher zu Ihrem Codierungsstil passt. Sie können die gleichen Dinge mit beiden Frameworks erreichen, es ist nur eine leicht unterschiedliche Syntax und Denkweise für jeden.

    
John Duff 14.01.2010 14:07
quelle
2

jQuery ist effizienter für kleine, intelligente Client-Effekte. prototypejs ist effizienter für die Entwicklung von JavaScript.

jQuery hat eine Vielzahl von Plugins für robuste UI-Effekte. prototypejs hat eine vollständige Bibliothek für Enumerables, Funktionen, Hashes.

    
Alsciende 14.01.2010 14:11
quelle