Wenn man bedenkt, wie viel einfacher die Entwicklung von jQuery im Vergleich zu nativem JavaScript ist, warum verzichtet man dann überhaupt auf Bibliotheken wie jQuery?
Liegt es daran, dass jQuery Einschränkungen aufweist oder langsam ist? Ich meine, wenn jQuery im Vergleich zu nativem Javascript so einfach ist, aus welchen Gründen müssen die Leute dann noch reines Javascript verwenden?
XMLHttpRequest
vsActiveXObject
oderaddEventListener
gegenattachEvent
odercss selectors
vsxpath selectors
vsno selector support
, etc ...) In neueren Browsern , die meisten dieser Probleme nicht existieren, weil sie den gleichen Standards folgen.Antworten:
Reden wir über Autos.
Oh, warte, wir haben es schon getan - erinnerst du dich an die Zeit, als wir uns vor einiger Zeit getroffen haben? Wir haben über Autos gesprochen. Tatsächlich schienen Sie der Experte für Autos zu sein. Sie konnten im Detail erklären, was richtig, falsch und aufregend am neuesten Formel-1-Rennen ist. Sie kannten auswendig alle Lamborghini-Modelle, einschließlich deren Preis und Verfügbarkeit. Sie haben sogar daran gedacht, einen eigenen Ferrari 599 GTB Fiorano zu kaufen, und haben dafür gespart (ich wette, das Steak-Dinner hat nicht viel geholfen).
Während Sie mit aufgeregter Stimme die Fehler von Toyota erklärten, sprangen Sie plötzlich von Ihrem Stuhl, schrien in die Luft und schwenkten die Fäuste. Ich werde Automechaniker! "
Und so bist du gegangen. Sie hatten ein Interview, der Boss war genauso beeindruckt wie ich von Ihrem Wissen und Sie wurden engagiert. Der erste Klient kam herein. Seine Kupplung war gebrochen. Sie haben es überprüft und wussten nicht, was Sie tun sollten. Tatsächlich hatten Sie überhaupt keine Ahnung, wie Sie dem Rat folgen sollten, den Ihnen der Boss gegeben hatte. Du wurdest gefeuert.
Aber wie könnte das sein !? Sie wissen alles über Autos! Abgesehen von ... allem, was mit Autos zu tun hat. Sie können sehr gut wissen, dass Ihr Traumauto einen V12-Motor hat, aber Sie wissen nicht, was das eigentlich bedeutet.
Sie sind also eigentlich kein Automechaniker - Sie sind ein Autoenthusiast. Und bis Sie lernen, wie Autos funktionieren , bleiben Sie ein Enthusiast.
Jetzt lass mich dich fragen. Wie funktioniert
$.fn.text
Arbeit? Und was ist mit$.fn
? Was meinen sie wirklich? Wie kommt$(something)
ein gigantisches Ding zurück, das Dinge enthält, und was ist das genau? Können Sie theoretisch sogar deren Funktionalität zumindest ein wenig replizieren? Schaffst du es ohne jQuery?Zu sagen, dass "natives JavaScript schwer ist" ist einfach ... falsch. In erster Linie, weil JavaScript als Sprache nichts mit dem DOM zu tun hat , was hauptsächlich jQuery-Abstracts sind. Zweitens: Sobald Sie etwas über das DOM erfahren haben, können Sie bereits die häufigsten browserübergreifenden Fehler beheben. Aber nur ein kleines Geheimnis - zunächst ist alles schwer. Lange Teilung war eine Hündin in der 5. Klasse.
Als zweite Analogie zu dieser Antwort: jQuery ist JavaScript-DOM (nicht JavaScript die Sprache, nur das DOM) wie es
Array.prototype.forEach
istfor
. Es funktioniert in 99% der Fälle. Und es funktioniert gut. Aber für das 1% , die nicht abgedeckt ist, Sie müssen wissen , wie die verwendenfor
Schleife, wenn auch nur praktisch zu sein. Diese gesamte Antwort basiert auf der "reineren" Seite der Frage und nicht einmal auf der technischen Seite (z. B. der Größe der Bibliothek und einigen anderen Dingen, die in der Antwort von Michael Dorrant erläutert wurden). Weil ich JavaScript liebe und wenn die Leute es nur beiläufig beiseite werfen und sagen "pah, diese dummen Javascriptianer" und schicke weiße Handschuhe winken, kommt es auf die Moral an.Wenn Sie die Tatsache akzeptieren können, dass Sie immer ein JavaScript-Enthusiast sind, wer soll ich Sie dann aufhalten? Wenn Sie jedoch ein JavaScript-Programmierer sein möchten, müssen Sie über die erforderlichen Kenntnisse verfügen, um zumindest zwischen der Verwendung von jQuery (oder einer anderen Bibliothek) und der Nichtverwendung einer Bibliothek zu wählen . Lerne das DOM. Erfahren Sie, wie man es benutzt. Schreiben Sie Ihre eigene kleine Bibliothek oder nur eine Sammlung von Hilfsfunktionen. Und wenn Sie sich mit DOM auskennen und sich für jQuery - godspeed entscheiden. Faulheit wird für diejenigen vergeben, die hart gearbeitet haben.
quelle
Gründe, die ich kenne:
Wenn der Bedarf äußerst gering ist, sagen Sie 1 Klick.
Wenn die Download-Geschwindigkeit kritisch ist und die jQuery-Bibliothek zu groß und Sie nicht viel (benutzerdefinierten) Code schreiben müssen, um sie zu ersetzen.
Bei der Integration mit anderen Technologien ist manchmal raw js besser.
Bei der Arbeit an einem Legacy-System (auch bekannt als "Produktion") bereits in js mit etablierten Mustern geschrieben.
quelle
jQuery ist einfach ein Framework - eine Reihe von in JavaScript geschriebenen Tools. Wenn Sie diese Tools verwenden, verwenden Sie immer noch JavaScript. Einige Leute bevorzugen es, JavaScript mit den von jQuery bereitgestellten Werkzeugen zu schreiben, andere entscheiden sich dagegen, andere entscheiden sich für andere Werkzeugsätze.
Einige Gründe, warum Sie "reines" JavaScript ohne jQuery schreiben möchten:
quelle
jQuery fügt wie jede Bibliothek oder jedes Framework eine weitere Ebene von Fehlern hinzu . Ich liebe es, aber ich habe auch einen Tag damit verbracht, nach einem Fehler zu suchen, der sich im jQuery-Kern befand und nicht in meinem Code (ein seltener Anlass, aber nicht so selten).
Ansonsten finde ich keinen anderen Grund, es nicht zu benutzen:
ABER es sollte niemals als Ersatz für Javascript-Kenntnisse verwendet werden. Wenn Sie nicht wissen, wie man es mit reinem Javascript macht, können Sie zunächst mit einer Bibliothek davonkommen, aber auf lange Sicht werden Sie dafür bezahlen.
Und natürlich gibt es alle von uns, die schon seit einigen Jahren mit IE6 in tödliche Kämpfe verwickelt sind und unsere alten Schultricks nicht so leicht zugunsten eines glänzenden neuen Spielzeugs aufgeben werden.
quelle
The huge gallery of plugins help me write prototypes in very short times
... Nur Prototypen, ich vermeide sie wenn möglich im Seriencode . Es gibt natürlich einige Plugins mit exzellentem Code, aber man muss sehr genau nach ihnen suchen ...In der Browserumgebung benötigen Sie ein browserübergreifendes Normalisierungstool. Ein solches Werkzeug gibt es in zwei Varianten
Im Allgemeinen können Sie diese Dienstprogramme auf drei Arten verwenden
addClass
oder imsetText
gesamten Code, wann und wo Sie sie benötigenSie benötigen einen Normalisierungsmechanismus, ansonsten erhalten Sie keine browserübergreifende Unterstützung.
Was die Verwendung eines vorhandenen angeht, ist das in Ordnung. Ich würde einfach nicht jQuery verwenden. Persönlich schreibe ich gerade meine eigene Bibliothek ( DOM-shim behebt Browser, ohne dass eine fremde Propietory-API verfügbar gemacht wird. Es verwandelt Ihre Browser in einen einzigen, gut verhaltenen, standardisierten Browser).
quelle
Wenn Sie keine Unterstützung für DOM-Abstraktion, Cross-Browser und Legacy-Browser benötigen, können Sie ganz einfach auf jQuery verzichten.
Dies ist der Fall, wenn Sie Browsererweiterungen, (gelegentlich) Greasemonkey-Skripte, Dinge, die sich auf Zahlen beziehen, für Node.js oder andere Nicht-Browser-Umgebungen entwickeln.
quelle
Zusammen mit den anderen Antworten hier, insbesondere der von Michael Durrant , sah ich, dass Geschwindigkeit ein Hauptgrund für mich ist, mich gelegentlich für die Verwendung von unformatiertem JavaScript zu entscheiden.
In letzter Zeit habe ich an vielen Animationen oder anderen CPU-intensiven Aufgaben gearbeitet, und manchmal ist rohes JavaScript viel, viel schneller als wenn ich mit jQuery arbeite.
Ein Beispiel ist, wo ich die Deckkraft eines
position: fixed
Elements in Bezug darauf ändern wollte, wie weit ein Benutzer auf einer Seite gescrollt hat. Der Effekt war viel zu langsam, als ich dafür jQuery verwendet habe, wodurch das Scrollen ruckelte und der Fade-Effekt zerstört wurde. Ich habe auf reines JavaScript umgestellt und bis auf IE <= 8 war alles seidig glatt.quelle
Ich muss meine Antwort mit etwas offener Ehrlichkeit vorbereiten. Ich liebe jQuery. Dies erleichtert mir das Leben enorm und macht JavaScript-Code aussagekräftiger, so wie es meiner Meinung nach funktionieren sollte.
jQuery macht viele Dinge ...
Ja, Sie können Plugins hinzufügen.
Ja, Sie können Selektoren erweitern.
Ja, es vereinfacht die Animation
Aber jQuery macht nicht alles
Haben Sie jemals versucht, mit jQuery in mehreren Fensterkontexten zu arbeiten? jQuery kann es nicht leiden , mit verschiedenen Fensterkontexten umzugehen, weil es das Original
window
und dendocument
Kontext des Fensters beibehält, in dem es aufgerufen wurde.Ich habe hier und da etwas Code geschrieben, um Popouts * zu erstellen, und jQuery kann mich einfach in die Quere kommen, was ich erreichen möchte. Das Hinzufügen eines neuen Verweises auf jQuery im untergeordneten Fenster kann die Situation oft verschlimmern, indem es schwieriger wird, festzustellen, welcher jQuery-Kontext verwendet wird.
* Denken Sie an das Popout von Google Mail zum Erstellen einer E-Mail in einem neuen Fenster, nicht an Spam-Werbung
Verwenden Sie es, wenn es den Code vereinfacht
Die Zeit für die Verwendung von jQuery ist, wenn Sie Ihren Code einfacher, kürzer, lesbarer und schneller machen können.
Die Zeit, um jQuery nicht zu verwenden, ist, wenn es Ihren Code nicht einfacher, kürzer, lesbarer oder schneller macht. Wenn Sie die Ladezeiten optimieren müssen, möchten Sie möglicherweise jQuery aufgrund des Ereignis-Overheads nicht verwenden.
quelle
Wie Sie wissen, handelt es sich bei jQuery um ein allgemeines Framework, das viele Methoden bereitstellt, die viele von uns in ihren Projekten nicht verwenden. (Einige davon habe ich überhaupt nicht benutzt.)
Es gibt zwei Hauptgründe, warum jQuery oder andere gut etablierte Frameworks nicht verwendet werden.
1. Das Projekt ist nicht groß oder komplex genug, um ein solches Framework zu verwenden. In diesem Fall trifft der Codierer eine fundierte Entscheidung auf der Grundlage seiner Erfahrungen und Kenntnisse in JavaScript. Dies hilft ihm, das Seitengewicht zu reduzieren und den Code besser zu kontrollieren.
2. Der Codierer entwickelt sein eigenes Framework Ich habe ein Projekt in meiner Firma gesehen, das ein eigenes JavaScript-Framework hat. Der Grund, warum sie zitieren, ist, dass sie auf die nächste Version warten müssen, wenn sie jQuery verwenden und es einen Fehler gibt, der behoben werden kann. Außerdem, wenn es eine Funktion hinzugefügt werden soll, brauchen sie das jQuery - Team darum zu bitten oder ein Plugin hinzufügen , obwohl so dass es ein Plugin wird nicht eine gute Idee sein (sie gaben das Beispiel eines benutzt zu haben
.live
ähnliche Sache in ihrem Framework, noch bevor es offiziell zu JQuery hinzugefügt wurde). Ein eigenes Framework gibt Ihnen mehr Kontrolle über den Code. Der Nachteil ist, dass Sie das Rad in Bezug auf Browserkompatibilitätsprobleme usw. neu erfinden müssen. Wenn der Entwicklungsprozess nicht gut ist, wird Ihr Framework aufblähen und nur die Zeit für die Wartung verlängern.quelle
Mike
Ich denke, die Leute, die sich gegen die Verwendung einiger Bibliotheken absichern, sind auf die Abhängigkeit von dieser Infrastruktur- / Bibliothekslösung zurückzuführen, um eine Aufgabe auszuführen.
Aber denken wir daran, dass Sprachen auf lange Sicht wie Bibliotheken kommen und gehen.
Vielleicht ist es der zeitliche Rahmen. Vielleicht zögern die Leute, in eine Bibliothek zu investieren, die vielleicht gar nicht da ist - oder auf lange Sicht genauso viel Schwung dahinter hat.
Mich selber? Ich habe keine Einwände gegen die Verwendung von JQuery im Besonderen. Ich schaue mir auch "Box2d.js" oder "Three.js" an und würde sie viel lieber annehmen, auch wenn sie nur eine kurze Haltbarkeit haben, als zu verpassen, welche Früchte sie zu bieten haben.
Mike Fazit: Es besteht das Risiko, dass die Haltbarkeit einer von Ihnen ausgewählten Bibliothek beeinträchtigt wird, und ich denke, einige Mitglieder der JavaScript-Community haben möglicherweise Verluste erlebt, weil eine Bibliothek oder ein Projekt zu Ende gegangen ist.
quelle
Ich würde sagen, das Hauptproblem ist, dass immer mehr Menschen (die große Mehrheit?) Nicht mehr wissen, wie man in JavaScript codiert. Wenn jQuery etwas nicht kann, können sie es nicht.
Es kommt auf den Punkt, dass es schwierig wird, einfache Javascript-Beispiele zu finden. Nichts gegen jQuery; Es ist ein großartiger Rahmen. Ich habe viele gute Ideen daraus, aber die Leute sollten zuerst JavaScript lernen und dann ein Framework lernen. Ich persönlich finde mein eigenes Framework flexibler und besser auf meine Bedürfnisse zugeschnitten, und ja, ich erfinde das Rad manchmal neu, aber die vollständige Kontrolle und Kontrolle über Fehlerkorrekturen ist ein großer Vorteil, vorausgesetzt, Sie sind bereit, die Arbeit in das Erlernen von JavaScript zu investieren.
Nicht nur das. Wenn Sie Vanilla JavaScript kennen, macht es viel mehr Spaß, herumzuspielen und mit den neueren Funktionen zu experimentieren, anstatt auf eine Framework-basierte Implementierung zu warten. Außerdem gebe ich jQuery nicht die Schuld, da es sich hauptsächlich um eine DOM- Bibliothek handelt, aber bei großen Projekten kann es schwierig sein, diese zu skalieren. Andere Frameworks machen dies besser; Der Prototyp kommt in den Sinn.
Kurz gesagt, es ist ein großartiger Rahmen, aber nicht das A und O, für das sich die Menschen eignen.
quelle
Ich kann zwei weitere Gründe hinzufügen, die nicht erwähnt wurden:
Wenn ich oft brandneue Technologien aufgreife, beginne ich mit Konstrukten auf niedrigerer Ebene, bevor ich zu Konstrukten auf höherer Ebene gehe. Ich bin in erster Linie ein C ++ / C # -Entwickler, aber vor einiger Zeit, als ich anfing, mit HTML / CSS / JavaScript herumzuspielen, entschied ich mich, kein Framework zu verwenden, weil ich zuerst die Technologie (dh JavaScript) verstehen wollte Sprache selbst), auf denen diese Frameworks aufbauen.
Ich weiß nicht, wie häufig dies vorkommt, aber es scheint, dass viele Leute, die das nächste Framework / die nächste Technologie / Sprache sehen, als erstes antworten: "Keine weitere API, die ich lernen kann!" Es ist ihnen egal, wie einfach jQuery ist, aber sie sehen es einfach als Hindernis zwischen sich und der Bereitstellung von Arbeit mit ihren "echten und erprobten" Methoden. Dies ist die gleiche Kategorie von Personen, die sich weigern, die Boost-Bibliothek oder eine der STL- Bibliotheken zu verwenden und malloc weiterhin für nahezu alles verwenden. Sie haben gefragt, warum sie sich für reines JavaScript über jQuery entscheiden, und in Wirklichkeit haben sie sich nie entschieden, weil sie sich die meiste Zeit geweigert haben, jQuery überhaupt zu evaluieren, und mit ihrem aktuellen Entwicklungstempo, egal wie langsam es ist, vollkommen zufrieden sind.
quelle
jQuery ist eine Bibliothek, die in und für JavaScript geschrieben wurde. Die Idee ist, dass all die schwierigen / langwierigen JavaScript-Dinge einfach sind, wodurch die Entwicklungszeit verkürzt wird und Ihre Skripte mit größerer Wahrscheinlichkeit browserübergreifend funktionieren.
Was macht jQuery vorzuziehen:
Die folgenden Gründe sprechen dafür, dass JavaScript der Verwendung von jQuery vorzuziehen ist:
Aus diesen Gründen verwende ich gerne JavaScript, um das jQuery-Framework zu umgehen. Es ist viel besser, JavaScript zu lernen, als von einer solchen Bibliothek abhängig zu sein ...
Auch wenn Sie sie erweitern möchten, müssen Sie Code in JavaScript schreiben. Welches ist auch ein großes Gespräch. Entwickler sind von diesen Bibliotheken abhängig. Um also die Kontrolle über Projekte zu haben, ist JavaScript besser als die Verwendung von Frameworks.
quelle
Ich denke, die Leute verwenden jQuery, weil es einfacher, einfacher und leistungsfähiger ist und weil es ihnen hilft, den Internet Explorer zu vergessen. Außerdem wird für benutzerdefinierte Funktionen Javascript verwendet. Weitere Informationen finden Sie im DOC
quelle