Kontext: Ich bin erstaunt über die Anzahl der Front-End-Entwickler, die den ganzen Tag über HTML, Javascript und CSS hacken und Tools wie jQuery ( oder andere gleichwertige Hilfs-Frameworks ) ignorieren und deren Verwendung ablehnen . Ich spreche nicht von JavaScript-Gurus, ich spreche jeden Tag in den Gräben von Joe-Produktionsentwicklern. Ich bekomme viele Argumente, die eher Ausreden oder persönlichen Meinungen ähneln, von denen ich glaube, dass sie keinen technischen Wert haben. Ich möchte sicherstellen, dass mir nichts fehlt.
Frage: Was sind einige empirische technische Gründe, um jQuery nicht zu verwenden?
Ich suche nicht nach religiösen oder dogmatischen Argumenten oder subjektiven Meinungen, "wie ein anderer Rahmen besser ist", sondern betrachte jQuery als den Strohmann für alle vergleichbaren Rahmen in der Frage.
var one = $("<div/>").data("add", 1); var two = $("<div>").data("add", 2); console.log(one.data("add")+two.data("add"));
Antworten:
Update 2015:
Update 2016:
Ursprüngliche Antwort:
Ich werde über jQuery antworten, aber das sind die gleichen Argumente, die ich gegen die Verwendung von YUI, Prototype, Dojo, Ext und wenigen anderen gehört habe. Hauptargumente, die ich gehört habe:
Die Dateigröße , die bei jQuery 3.2.1 tatsächlich 84,6 KB beträgt, ist wahrscheinlich kleiner als das Logo auf einer durchschnittlichen Website und kann über das CDN von Google bereitgestellt werden, das sich wahrscheinlich bereits im Cache der meisten Ihrer Besucher befindet. Da die Verwendung von jQuery immer eine kleinere Dateigröße Ihrer eigenen JavaScript-Dateien bedeutet, kann dies tatsächlich einen kleineren Download bedeuten , auch wenn dies nicht bereits im Browser-Cache der Fall ist.
Geschwindigkeit - das Schreiben von reinem JavaScript mag schneller sein, aber das Schreiben von tragbarem JavaScript scheint für die meisten Menschen unmöglich zu sein. Eine Website, die schneller ist, aber nicht in jedem gängigen Browser funktioniert, ist in der realen Welt nutzlos. Außerdem verwendet jQuery einige ziemlich umfangreiche Optimierungen, um tatsächlich verdammt schnell zu sein, und wird mit jeder Veröffentlichung noch schneller. Daher ist es nicht so einfach, schnelleren Code von Hand für etwas anderes als triviale Beispiele zu schreiben. (*)
"geistiges Eigentum" - ein Unternehmen hat Angst, den Code eines anderen zu verwenden - während jQuery Open Source und kostenlose Software ist, die überall verwendet wird, vom Blog Ihrer Großmutter bis zu Amazon, von Twitter bis zur Bank of America, von Google bis Microsoft - wenn sie können Verwenden Sie es, dann kann jedes Unternehmen es verwenden.
Ich kann mich nicht erinnern, ein anderes Argument ernsthaft gehört zu haben.
(*) Hier ist ein triviales Beispiel: getElementById ('someid') vs. jQuery ('# someid')
Ist die Verwendung von getElementById schneller? Ja. Und natürlich überprüft jeder immer den parentNode, um zu erkennen, wann Blackberry 4.6 Knoten zurückgibt, die nicht mehr im Dokument enthalten sind, oder? jQuery tut es. Und jeder behandelt den Fall, dass IE und Opera Elemente nach Namen anstelle von ID zurückgeben, oder? jQuery tut es. Wenn Sie dies nicht tun, ist Ihr Code nicht portierbar und Sie führen subtile Fehler ein, die sehr schwer zu finden sein können. Und getElementById ist das trivialste Beispiel, das man finden könnte - lassen Sie mich nicht einmal mit Events und AJAX und dem DOM anfangen ...
Aktualisieren:
Es gibt tatsächlich ein viertes Ergebnis der Frage, warum jemand jQuery nicht verwenden möchte. Ich habe vergessen, es auf diese Liste zu setzen, weil es nicht wirklich eine Antwort ist, sondern das Fehlen einer Antwort. Der Kommentar, den ich gestern bekam, erinnerte mich daran. Dies ist kaum ein "technischer Grund", der in die Liste aufgenommen werden soll, kann aber dennoch interessant sein und tatsächlich die häufigste Reaktion sein.
Was ich persönlich als Hauptgrund für all diese Reaktionen vermute , ist meines Erachtens das größte Hindernis für den Fortschritt in der Informatik: "Ich möchte es nicht nutzen, weil ich es nie getan habe, deshalb muss es nicht so wichtig sein. "
Es war einst die Reaktion auf die Optimierung von Assemblern, Compilern, strukturierter Programmierung, höheren Sprachen, Speicherbereinigung, objektorientierter Programmierung, Schließungen oder so ziemlich allem, was wir heute für selbstverständlich halten - und heute sind es AJAX-Bibliotheken. Vielleicht wird sich eines Tages niemand mehr daran erinnern, dass wir früher manuell mit der unformatierten DOM-API auf Anwendungsebene interagiert haben, wie jetzt, und niemand erinnert sich daran, dass wir früher Programme mit rohen, schmucklosen, unergründlichen Hexadezimalzahlen geschrieben haben .
quelle
jQuery drückt alles in einem DOM-zentrierten Paradigma aus, das irreführend sein kann und keine Notwendigkeit erfordert, Dinge in einem Anwendungsmuster auszudrücken.
Viele Entwickler programmieren sich mit diesem DOM-zentrierten Muster in eine Ecke und stellen schließlich fest, dass sie nichts Erweiterbares oder Wiederverwendbares erstellt haben.
Rebecca Murphey hat eine großartige Zusammenfassung ihres eigenen Wechsels zu Dojo von jQuery - in dem Blog-Beitrag geht es mehr darum, warum nicht jQuery oder warum Dojo.
quelle
Ein Grund, kein Framework zu verwenden - und dies ist ein extremer Randfall - ist das Schreiben von einbettbarem Code für eine andere Website, z. B. ein Banner. Das willkürliche Einfügen einer komplizierten Bibliothek oder einer anderen verschmutzt den Namespace und beschädigt möglicherweise die Site eines anderen. Nicht, dass ich es einigen Werbetreibenden nicht überlassen würde, es trotzdem zu versuchen, den teichsaugenden Abschaum, aber ich schweife ab ...
Ich lehne es ab, ein Framework hinzuzufügen, wenn eines bereits vorhanden und gleichermaßen fähig ist. Ich sehe es allzu oft und es ist mein Haustier Hass, ich sehe es als ungerechtfertigtes Aufblähen. Das ist eine ganz andere Frage.
Ansonsten kann ich mir keinen berechtigten Grund vorstellen, dies nicht zu tun.
quelle
Dateigröße - aber darüber hinaus ist es ein absolutes Muss für plattformübergreifende Javascript- und Browser-Unterschiede. Sie müssten einige sehr gute Gründe haben, um es nicht in Ihrem Toolkit zu haben (oder ein fundamentalistischer Entwickler-Idiot zu sein).
quelle
quelle
quelle
Auf jeden Fall mag ich jQuery, aber es gibt einige Gründe, jQuery nicht zu verwenden:
quelle
Weil es ziemlich oft einfach unnötig ist. Wenn ich nur eine Eingabe oder ein Feld überprüfen möchte, ist es genauso einfach, einfachen Javascript / Dom-Code zu schreiben. Und jQuery hilft in so einfachen Fällen nicht wirklich. Die Frage sollte also sein, warum es verwendet wird.
Natürlich gibt es viele Fälle, in denen es sehr nützlich ist, aber manchmal scheinen die Leute es auch ohne wirklichen Grund zu benutzen.
quelle
Ich würde es vorziehen, jquery für die Dom-Manipulation oder das Durchqueren des dom zu verwenden, was mit jquery wirklich einfach ist. Darüber hinaus ist das Anhängen eines Ereignisses oder einer Ereignisdelegation mithilfe von jquery oder einem anderen Framework so einfach, dass Sie einen benutzerdefinierten Ereignisanhang für IE- oder Nicht-IE-Browser usw. schreiben müssen.
Aber es hat einige Leistungseinbußen, wenn Sie $ .each anstelle von Vanilla JS für und array.push () verwenden ... andere Probleme, wie wenn Sie ein Ereignis binden und entfernen, ohne es zu lösen, wird es zu einem Speicherverlust kommen ....
Mein Fazit ist, nur ein Framework für komplexe Dom-Manipulationen zu verwenden und Vanilla JS zu verwenden
quelle
Warum nicht jQuery verwenden?
Ich kann mir keine gute Ausrede vorstellen, Vanille-JavaScript gegenüber jQuery zu verwenden (abgesehen von dem Einschüchterungsfaktor, etwas Neues zu lernen), aber einige Leute bevorzugen andere JavaScript-Frameworks (wie die hervorragenden MooTools ) aufgrund der philosophischen Unterschiede zwischen ihnen.
Einige Leute mögen die DSL- artige Syntax von jQuery einfach nicht , aber sie erkennen die Bedeutung der Verwendung eines robusten JavaScript-Frameworks.
Persönlich liebe ich jQuery, aber ich kenne Leute, die andere Frameworks verwenden und nicht weniger produktiv sind.
quelle