Was sind einige empirische technische Gründe, um jQuery nicht zu verwenden? [geschlossen]

74

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.


quelle
31
Ich denke wirklich, dass jQuery einige Leute dümmer macht, ernsthaft, sie denken, dass jQuery eine Programmiersprache und Javascript ein Framework ist ... Bald werden sie fragen, wie man mit jQuery zwei Zahlen addiert.
40
Wie addiert man mit jQuery 2 Zahlen?
Gefangener NULL
17
var one = $("<div/>").data("add", 1); var two = $("<div>").data("add", 2); console.log(one.data("add")+two.data("add"));
Yusaf Khaliq
1
Ich gebe voll und ganz zu, dass die Verwendung von jQuery besser ist als Vanilla JS, aber ich denke, jeder Webentwickler sollte wissen und verstehen, was jQuery tatsächlich tut, bevor er es verwendet, und wie er das implementiert, was er ohne jQuery will. Ich denke, viele Programmierer kennen im Gegensatz zu jQuery keine reine JavaScript-Syntax und machen daher häufig Fehler.
Shjeff

Antworten:

129

Update 2015:

In dieser Antwort aus dem Jahr 2011 spreche ich von Bibliotheken wie jQuery, YUI oder Prototype. Diese Argumentation gilt auch heute noch für Frameworks wie Angular, React oder Ember. In diesen 4 Jahren hat sich die Technologie enorm weiterentwickelt, und obwohl ich deutlich weniger Vorurteile gegenüber React oder Angular sehe als gegenüber jQuery oder YUI, ist dieselbe Art des Denkens - wenn auch in geringerem Maße - bis heute vorhanden.

Update 2016:

Ich kann einen Artikel nur empfehlen, der vor einigen Tagen veröffentlicht wurde:

  • Warum jQuery? von Michael S. Mikowski, Autor des Buches Single Page Web Applications

Dieser Artikel ist im Grunde eine sehr detaillierte Antwort auf diese Frage. Wäre es verfügbar gewesen, als ich die Antwort unten schrieb - ich hätte es definitiv zitiert.

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:

  1. 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.

  2. 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. (*)

  3. "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.

  4. 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 .

rsp
quelle
3
Zu viele Personen im Unternehmen verstehen die Open Source-Lizenzierung nicht. Sie wissen, dass die GPL ansteckend ist und in jeder Software vermieden werden muss, die möglicherweise in ein Produkt gelangt. Viele von ihnen gehen dann auf Nummer sicher, indem sie aus Angst vor einer GPL-Infektion die Verwendung von Open Source überall im Unternehmen verbieten.
Michael Dillon
23
Deshalb sage ich immer, dass Microsoft jQuery verwendet und dass dies das letzte Unternehmen auf der Welt ist, das das Risiko eingeht, alles zu verwenden, was sein wertvolles geistiges Eigentum bedroht.
rsp
6
Dies ist eine sehr hochwertige Antwort, und die Zeit, die Sie zum Schreiben benötigt haben, wird geschätzt!
4
Sie haben den eigentlichen Hauptgrund für die Leistung vergessen. jQuery ist im Vergleich zu nativem JS bei der DOM-Manipulation sehr langsam - dies ist eine bekannte Tatsache. In kleinen Anwendungen macht sich dies nicht bemerkbar, aber die Interaktion in großen Webanwendungen wird dadurch offensichtlich nervös. Außerdem liegen Sie bei der Dateigröße falsch. Selten schreibe ich so viel natives JS, dass es die Menge an Code in der gesamten Bibliothek von jQuery und in meiner Anwendung übersteigt. Du bist voreingenommen. jQuery ist nützlich beim Erstellen der meisten Websites und Prototypen von Webanwendungen, aber es gibt einen Grund, es nicht zu verwenden: Außerdem gibt es in nodeJS kein DOM.
Benny
2
Vor leicht verständlichen Hexadezimalzahlen gab es Plugboards . Ab Juli 2010 gibt es noch mindestens eine Produktion IBM 402
Elliott Frisch
23

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.

philwinkle
quelle
3
Interessant über das DOM zentrierte Paradigma, aber meine Frage wollen beinhaltet nicht verwenden , alles , Dojo enthalten.
In diesem Sinne, wenn Sie Zeit haben, finden Sie vielleicht Rebeccas jsconfeu-Präsentation lohnenswert (und vielleicht relevanter für Ihre aktuellen Interessen): jsconfeu.blip.tv/file/4308069
Ken Franqueiro
1
Ich habe den Verweis auf ihren Blog-Beitrag aufgenommen, weil sie darüber spricht, warum nicht jQuery oder warum sie sich für Dojo entschieden hat. Die Hauptpunkte sind die Gründe, die ich oben ausgeführt habe. Persönlich glaube ich, dass die Nichtverwendung eines Frameworks heutzutage auf Unwissenheit, Stolz oder beidem beruht.
Philwinkle
danke für den zusätzlichen Link, es sieht aus wie ein gut durchdachtes Stück, ich werde es auf jeden Fall lesen
18

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.

Uhrwerk
quelle
1
Dies ist eine gute Antwort, an die sonst niemand gedacht hat
1
Dies. Ich bin gerade erst auf eine Seite gestoßen, auf der ich einige Wartungsarbeiten durchführen musste, bei denen JQuery 1.4.4 als JS-Tag und JQuery 1.3.x mit Googles CDN und einem alternativen Namespace geladen wurde (so wurde die $ () - Methode zu etwas wie $ jq ()).
Cthulhu
stackoverflow.com/questions/693174/… => nicht nur beim Einbetten von Code in eine andere Website, sondern auch in andere Engines, die Javascript unterstützen.
Ribamar
11

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).

jpea
quelle
1
Ja, diese sehr guten Gründe sind das, wonach ich suche ...
12
Wenn ich Ihrem Kommentar "fundamentalistischer Entwickler-Idiot" etwas Ausgewogenes hinzufügen darf , bedenken Sie die Tatsache, dass es auch viele fundamentalistische jQuery-Idioten gibt . Dies sind diejenigen, die die Verwendung von jQuery in absolut jeder Situation empfehlen , auch wenn Sie nur 5 Zeilen Javascript benötigen.
user113716
Ich kann das nicht unterstützen. Komprimierte jQuery ist 29 KB groß - ein gutes Stück kleiner als die meisten Bilder - und wenn sie von einem CDN bereitgestellt wird (siehe docs.jquery.com/Downloading_jQuery ), ist sie sehr gut zwischenspeicherbar.
2
Nichts wie eine gute, sehr subjektive Meinung, um die Kommentare auszulösen :) - für diejenigen, die jQuery nur zur Vereinfachung der Auswahl verwenden, könnten sie auch die von ihnen verwendete
Auswahlmaschine
1
@jpea: Pints ​​wird das tun. ; o) Großartiger Punkt bei der Verwendung von Sizzle.
user113716
7
  • Sie können die Dateigröße nicht rechtfertigen (obwohl es wahrscheinlich weniger als ein Skript ist, das die bereitgestellten Abstraktionen nicht verwendet).
  • Sie möchten sich nicht auf Tools von Drittanbietern verlassen.
  • Ihr Unternehmen möchte keine Bibliotheken betreiben (aus welchen Gründen auch immer).
  • Ihr Unternehmen möchte keinen JavaScript-Code ausführen, der nicht von seinen Mitarbeitern geschrieben wurde.
Alex
quelle
Einige dieser Punkte erinnern mich daran, wie ich diese Frameworks vor 5 Jahren dachte, als sie noch jung waren. Zu der Zeit wusste ich fast nicht genug, um zu verstehen, wie viel Zeug sie Programmierern ersparen, sich regelmäßig damit befassen zu müssen, und ich dachte natürlich: "Warum nicht einfach selbst das tun, was ich brauche?" Ich frage mich, wie hoch sind Ihrer Meinung nach die Chancen, dass einige Unternehmen 5 Jahre später noch so denken? Zum größten Teil würde ich sagen, dass sie sich selbst einen schwerwiegenden Nachteil erweisen, es sei denn, Dateigröße oder IP sind wirklich ein Problem .
Ken Franqueiro
2
@ Ken Franqueiro Ich habe es hier auf Stack Overflow gesehen. Jemand fragte nach etwas ohne jQuery, und dann fragte jemand anderes, warum man jQuery nicht verwenden sollte. , auf die der Fragesteller geantwortet hat, kann unser Unternehmen keine Bibliotheken von Drittanbietern verwenden . Vielleicht, sie für die NASA arbeiten und die neue Weltraumforschung Maschinen verwenden JavaScript (hey, es ist überall: P)
alex
2
Zeit für jemanden, einen neuen Job zu finden!
5
  • Lernen: Um alles zu codieren und mehr zu lernen. (Anstatt vorcodiertes Material zu verwenden)
  • Größe: jQuery verfügt über Tonnen von Funktionen, die Sie möglicherweise nicht benötigen. Warum sollte der Benutzer so viel Code herunterladen, wenn er nicht verwendet wird?
  • Alternativen: Derzeit gibt es Dutzende leistungsfähigerer, gut strukturierter Webframeworks.
  • Flexibilität: Obwohl jQuery sehr flexibel ist, benötigen Sie möglicherweise etwas, das es nicht bietet.
JCOC611
quelle
1
"Um tatsächlich alles zu codieren und mehr zu lernen." - Dies funktioniert für Studenten, aber wenn Sie der Typ sind, der die neue Website von JS for Massive Inc erstellen muss, müssen Sie in der Lage sein, die Verantwortung für die Verwendung von Barebones JS zu übernehmen, Ihrem eigenen Framework, das ausnahmslos versucht, einige zu emulieren von den vorhandenen Frameworks und verfügen über die Einsicht und Erfahrung, um Browserkompatibilitätsfehler zu verhindern und zu beheben, die JQuery und ähnliche Bibliotheken bereits haben. Ein gutes Beispiel hierfür finden Sie in der Antwort von rsp.
Cthulhu
4

Auf jeden Fall mag ich jQuery, aber es gibt einige Gründe, jQuery nicht zu verwenden:

  1. Downloadgröße / Bandbreite: jQuery 1.5 ist jetzt über 200 KB unkomprimiert, für einige ist die Größe der Bibliothek zu groß, um den Vorteil zu rechtfertigen.
  2. Leistung: Das Schreiben von nativem JS ist immer schneller als das Abstrahieren hinter einer Bibliothek.
  3. Zusätzliche Komplexität: Viele Benutzer laden die gesamte jQuery-Bibliothek herunter, wenn sie wirklich nur ein paar nette Funktionen benötigen.
  4. Anwendungsabhängigkeiten: Das Einführen von Abhängigkeiten hat immer Probleme. Wenn in jQuery ein Fehler vorliegt, können Sie die Datei debuggen und bearbeiten. Ein späteres Upgrade führt jedoch zu Problemen. Sie könnten den Fehler hinterlassen, aber jetzt sind Sie für eine Korrektur auf den Zeitplan von jQuery angewiesen, nicht auf Ihren eigenen.
Eli
quelle
6
Natürlich sollten Sie für die Produktion immer die minimierte und gezippte Version verwenden, die zum Zeitpunkt dieses Schreibens 29 KB groß ist. Zweitens, obwohl es stimmt, dass Abstraktionen die Leistung verlangsamen, vertraue ich den jQuery-Entwicklern in vielen Fällen mehr als mir selbst und ähnlichem. In einer von mir geerbten Anwendung war eine selbst entwickelte Sorte (die nicht sofort schrecklich war) um eine Größenordnung langsamer als die Verwendung des jQuery-Plugins für den Tablesorter.
Xiong Chiamiov
Natürlich. Ich mag jQuery, aber für einige sind dies ihre Argumente.
Eli
3
Google stellt jQuery über sein CDN bereit. Wenn Sie diese Version verwenden, befindet sie sich höchstwahrscheinlich bereits im lokalen Cache des Benutzers.
3

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.

jcoder
quelle
1
Selbst in solchen trivialen Fällen würde ein JS-Framework helfen. Verhindern Sie browserübergreifende Fehler mit Dingen wie getElementById (siehe Antwort von rsp), erhalten Sie sofortigen Zugriff auf vorgefertigte Validatoren mithilfe des JQuery-Validierungs-Plugins usw. Die Verwendung von JQuery würde die Entwicklungszeit verkürzen und die Entwicklungszeit ist teuer. Vor allem, wenn die Anzahl der Eingaben validieren im Laufe der Zeit zunimmt und standortweite JS-Inhalte enthält.
Cthulhu
2

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

paul
quelle
2

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.

ClosureCowboy
quelle
Ja, ich weiß das. Was ist mit den anderen Leuten, die nicht wissen, wie wichtig es ist, ein robustes JavaScript-Framework zu verwenden? Haben sie technisch gültige Gründe?
1
@fuzzy: Emotionale Gründe sind bei der Auswahl von Werkzeugen weitaus wichtiger als technische, es sei denn, Sie sind einer der wenigen technischen Architekten, die das Mandat haben, den besten Weg zu finden, um Dinge zu tun.
Michael Dillon
@Michael - Ich bin in einer Position, in der mir diese Art von Gründen egal sind, ich kümmere mich darum, wie produktiv meine Leute sind, genauso wie ich nicht verstehe, warum manche Leute darauf bestehen, NotePad unter Windows zu verwenden, um all ihr Java zu schreiben Code mit einer dedizierten Java-IDE ist immer produktiver. Mir ist wichtig, wie produktiv Menschen sind, und ich wollte nur sicherstellen, dass mir kein gültiger technischer Grund fehlt, nicht darauf zu bestehen, so etwas wie jQuery zu verwenden.
1
@fuzzy lollipop: Du verstehst, dass Javascript-Bibliotheken nur vorab geschriebener Javascript-Code sind, oder?
user113716
1
... Gründe wie Dateigröße sind subjektiv. Was eine Person für zu groß hält, kann für eine andere als vollkommen akzeptabel angesehen werden. Sehen Sie, worauf ich hinaus will?
user113716