it-swarm.com.de

Vorteile der Verwendung von reinem JavaScript gegenüber JQuery

Was sind die Vorteile der Verwendung von nur Javascript gegenüber der Verwendung von nur JQuery?

Ich habe nur begrenzte Erfahrung mit JavaScript- und JQuery-Codierung. Ich habe HTML-Seiten jeweils Bits und Snippets hinzugefügt, aber ich habe meistens serverseitige Inhalte in anderen Sprachen codiert. Ich habe festgestellt, dass Sie zwar theoretisch die gleichen Dinge mit einem der beiden Ansätze tun können (und natürlich sogar im selben Projekt verwechseln können), aber die Tendenz zu bestehen scheint, JQuery immer von Anfang an zu verwenden egal was das projekt verlangt.

Ich frage mich also nur, ob es pünktliche Vorteile gibt, nicht nur JQuery zu verwenden, sondern nur einfaches altes JavaScript zu verwenden.

Ich weiß, dass dies wie eine Nicht-Frage aussieht, weil darüber gesagt werden kann, dass "es keine eindeutige Antwort gibt" oder "es kann für immer diskutiert werden", aber ich hoffe tatsächlich auf pünktliche Antworten wie "Sie können dies in tun ein Ansatz und Sie können es nicht mit dem anderen tun ".


Gemäß dem Kommentar von scrwtp beziehe ich mich nicht nur auf den Teil DOM-Handling. Meine Frage ist eher: JQuery ist eine Bibliothek. Für Javascript. Was ich an dieser Bibliothek im Gegensatz zu anderen Bibliotheken für andere Sprachen seltsam finde, ist, dass sie in JQyerys Fall so konzipiert zu sein scheint, dass sie ausschließlich verwendet werden kann und Javascript nicht direkt berühren muss. Dies steht im Gegensatz zu Hibernate und SQL, wo, obwohl die Bibliothek (oder eher das Framework in diesem Fall, aber ich denke, die Analogie gilt immer noch) viele Aspekte in den Griff bekommt, Sie SQL immer noch verwenden können, wenn Sie es verwenden , zumindest für einige Randfälle. Im Fall von JQuery & Javascript können Sie jedoch alles, was Sie mit Javascript tun, nur mit JQuery tun (oder zumindest scheint es mir so).


Gemäß dem Kommentar von Stargazer712: Ja, ich stimme Ihnen zu, die Frage hier ist, wie Sie sagen, "nur eine Frage, wie Sie JavaScript verwenden werden". Das war es, was ich eigentlich wollte, aber ich habe einige schlechte Formulierungen gemacht. Hier ist eine weitere Analogie: Spring Expression Language . Es ist eine Java -Bibliothek. Sie können sie nicht ohne Java verwenden, sie basiert auf Java, und Sie können Java nur noch verwenden. In der Praxis können Sie dies jedoch hinzufügen Bibliothek zu einem Java Projekt, und schreiben Sie dann Ihren gesamten Code mit der Ausdruckssprache von Spring EL, wodurch Ihr Code effektiv nicht wie Java überhaupt, und es ist sogar ein Paradigma) Verschieben (zum Beispiel haben Sie keine starke Typ-Durchsetzung mehr, wenn Sie dies verwenden). Obwohl ich verstehe, dass JQuery nur eine JS-Bibliothek ist, scheint es mir, dass es in der Praxis den gleichen Effekt hat wie Spring EL mit Java, dh Sie können Verwenden Sie die APIs nur während eines Projekts und vermeiden Sie die APIs von JavaScript. Und ich habe mich gefragt, ob dies eine gute Sache ist, was die Fallstricke sein könnten usw.

(und ja, nachdem ich alle Antworten gelesen habe, verstehe ich das:

ein. Meine Frage ist bis zu einem gewissen Punkt etwas unsinnig

b. Selbst wenn die Frage vollständig zutreffend wäre, wäre die Antwort ziemlich genau: "Nein, Sie können nicht immer nur JQuery verwenden."

87
Shivan Dragon

Zunächst einmal - es ist unmöglich, nur jQuery zu verwenden. Alles, was jQuery tut, ist, Ihrem globalen Bereich ein $ -Objekt mit einer Reihe von Methoden hinzuzufügen. Noch manipulativere Bibliotheken wie Prototypen sind keine Alternative zu Javascript, sondern ein Werkzeuggürtel zur Lösung häufiger Probleme.

Die Hauptvorteile beim Hinzufügen von jQuery zu Ihrem Toolbelt wären:

  • browserkompatibilität - So etwas wie .attr () ist viel einfacher als die nativen Alternativen und wird nicht über alle Browser hinweg funktionieren.
  • vereinfachung normalerweise komplizierter Vorgänge - Wenn Sie eine gut geschriebene browserübergreifende Version einer XHR-Methode sehen möchten, werfen Sie einen Blick auf die Quelle für $ .ajax - allein für diese Methode lohnt sich der Aufwand für jQ fast.
  • DOM-Auswahl - Einfache Dinge wie das Binden von Ereignissen und das Auswählen von DOM-Elementen können kompliziert sein und sich je nach Browser unterscheiden. Ohne viel Wissen können sie auch leicht schlecht geschrieben werden und Ihre Seite verlangsamen.
  • Zugriff auf zukünftige Funktionen - Dinge wie .indexOf und .bind sind natives Javascript, werden jedoch von vielen Browsern noch nicht unterstützt. Wenn Sie jedoch die jQuery-Versionen dieser Methoden verwenden, können Sie sie browserübergreifend unterstützen.

Javascript ist nicht mehr nur eine clientseitige Sprache, und da jQuery so DOM-abhängig ist, ist es ein schrecklicher Kandidat, auf den Server zu wechseln. Ich empfehle dringend, etwas Zeit in das Verständnis zu investieren, warum Sie jQuery verwenden (diese Frage zu stellen ist ein guter erster Schritt!) Und zu bewerten, wann dies erforderlich ist. jQuery kann gefährlich sein, einige der Hauptgefahren sind:

  • codequalität - jQuery hat eine riesige Community und eine geringe Lernkurve. Dies ist ein perfekter Sturm für viele schlecht geschriebene Open Source Plugins.
  • ineffizienz - jQuery ist einfach ineffizient zu schreiben. Beispielsweise ist die Verwendung von jQuerys anstelle von for-Schleifen nicht erforderlich und kann in einigen Fällen Auswirkungen auf die Leistung haben. Viele gute Infos zu diesem Thema unter JSPerf
  • bloat - jQuery ist eine riesige Bibliothek. In den meisten Fällen verwenden Sie eine kleine Teilmenge der Funktionen und greifen auf die gesamte Bibliothek zu. Es gibt einige großartige Alternativen, mit denen Sie Teilmengen der Funktionen wie zepto.js und underscore.js erhalten. Abhängig von Ihrer Situation können Sie einige Bytes sparen, indem Sie die richtige Bibliothek für Ihre Anforderungen auswählen.

Letztendlich ist jQuery eine unglaublich nützliche und hilfreiche Bibliothek, wenn sie richtig verwendet wird. Es ist jedoch keine Alternative zu Javascript. Es ist eine Bibliothek, genau wie zepto.js , YUI , Dojo , MooTools und Prototyp - eines davon ist möglicherweise eine viel bessere Wahl für Ihr aktuelles Projekt.

Javascript ist eine missverstandene Sprache und wird erst seit kurzem von den meisten Menschen als etwas mehr als eine Skriptsprache angesehen. Ich empfehle wirklich, mehr darüber zu lesen. Hier sind ein paar gute Startpunkte:

Bearbeiten 07/2014 - Ich habe festgestellt, dass dieser Beitrag immer noch Aufmerksamkeit erhält, daher habe ich eine Reihe von Links hinzugefügt. Diese sind in keiner bestimmten Reihenfolge, sollten aber hilfreich sein.

  • Ben Almans Blog - viele gute Best Practices hier. Ich bin nicht mit allen einverstanden, aber ich lerne ständig neue Dinge aus seinem Blog.
  • Code Academy - Grundausbildung für Javascript und jQuery. Manchmal hilft es, zu den Grundlagen zurückzukehren.
  • Javascript Garden - Ein Beitrag zu den schwierigeren oder missverstandenen Funktionen von Javascript. Bitte lesen Sie dies von Zeit zu Zeit, bis alles Sinn macht.
  • Bocoup - Dies sind Schulungskurse. Wenn Sie in der Nähe von einem sind, gehen Sie dorthin. Viele der besten JS-Sprecher und Lehrer unterrichten diese.
  • Paul Irishs Blog - nicht ausschließlich JS, aber hier werden viele Best Practices beschrieben. Es ist großartig, ihm und Bens Twitter-Feeds zu folgen.
  • Javascript: The Good Parts - Dieses Buch von Douglas Crockford wird oft als "The Javascript Bible" bezeichnet und ist ein erstaunlicher Ort, um Javascript zu verstehen.
  • Isaac Schlueters Blog - Isaac ist der Schöpfer von npm und arbeitet am Knotenkern. Er schreibt viel über die Javascript-Community und nicht über Code-Konventionen, aber wenn Sie wirklich mit js anfangen, ist es eine großartige Lektüre.
  • Douglas Crockfords Javascript - Wenn Brendan Eich der Vater von Javascript ist, ist Douglas der ausgesprochene Onkel von Javascript. Er ist der Autor der JSON-Spezifikation, der Javascript-Bibel und vieler erstaunlicher Beiträge zu den Macken und dem kometenhaften Aufstieg von Javascript.
  • Brendan Eichs Blog - Brendan ist der Schöpfer von Javascript - er schreibt über alle möglichen albernen Dinge in seinem Blog, und obwohl er seine Fehler als Person hat, sind seine Javascript-Beiträge wertvoll.
  • James Hallidays (@substack) Blog - Substack ist wohl der wichtigste node.js-Entwickler in der Community - mit rund 400 (und täglich wachsenden) npm-Modulen und einer Leitphilosophie von winzigen, Unix-ähnlichen Module, alles, was er schreibt, ist lesenswert.
  • Max Ogdens Blog Max Ogden ist ein weiterer produktiver node.js-Autor und kann hervorragend Blog-Beiträge schreiben, die Ihnen etwas beibringen. Er ist auch der Autor (mit anderen, glaube ich) von Javascript für Katzen.
  • Javascript für Katzen - Dies ist ein kurzes Tutorial, das Sie durch die Grundlagen von Javascript aus der Perspektive einer Katze führt. Wenn Sie ein Anfänger sind, lesen Sie dies durch. Es macht Spaß und lehrt in einer Stunde, wie viele Bücher Wochen brauchen, um zu kommunizieren.
  • Nicholas Zakas 'Blog Nicholas ist der Autor einiger fantastischer Javascript-Bücher: Objektorientierte Programmierung in Javascript , wartbares Javascript , Professional Javascript für Webentwickler und Hochleistungs-Javascript . Er konzentriert sich hauptsächlich auf den Kunden, hat aber eine Menge Best Practices und Leistungstipps.
  • Guillermo Rauch's Blog - Guillermo ist ein weiterer produktiver node.js-Entwickler, der vor allem für Socket.io und Mongoose bekannt ist. Sein Blog (und sein neues Buch Smashing Node.js sind beide großartige Ressourcen.

Ich bin mir sicher, dass es noch viel mehr großartige Ressourcen gibt, an die ich nicht denke oder von denen ich nichts weiß. Andere Antwortende sollten sich frei fühlen, diese Liste zu ergänzen.

113
Jesse

Es gibt Vorteile, aber es ist fraglich, ob sie die Nachteile wirklich überwiegen.

Das wichtigste ist, dass Sie Bandbreite sparen und schnellere Antworten erhalten. jQuery fügt Ihrer Antwort weitere ~ 30 KB hinzu. In einigen Netzwerken (und in einigen Ländern) kann dies einige Millisekunden länger dauern. Auf der anderen Seite können Sie das Caching jedoch ziemlich einfach über Ihren Webserver einrichten (oder, wie Xion sagte, von der Google-Website aus verwenden, damit es sich nicht auf Ihr eigenes auswirkt und trotzdem zwischengespeichert wird).

Die zweite Sache ist, dass Sie möglicherweise nur einige sehr einfache Funktionen benötigen und nur das Herunterladen und Einrichten von jQuery mehr Zeit in Anspruch nehmen kann, als nur das zu implementieren, was Sie benötigen.

Und schließlich möchten Sie vielleicht Ihr eigenes Framework erstellen, was meistens eine schlechte Idee ist, aber einige Leute haben ihre Gründe.

Wenn jedoch Sie verwerfen jQuery einfach, weil Sie von der Lernkurve eingeschüchtert sind, sollten Sie es sich noch einmal überlegen. Zumal es eher sanft ist.

17
Yam Marcovic

Soweit ich weiß, gibt es wirklich nur zwei Vorteile der Verwendung von Vanilla-Javascript gegenüber einer Bibliothek wie JQuery , MooTools usw.

  • Bibliotheken haben eine Nutzlast, die Bandbreite verbraucht. Aber wie die Leute bereits in den anderen Antworten darauf hingewiesen haben, können Sie dies durch Gzipping und Caching einschränken. Wenn Sie nur eine Teilmenge von jQuery möchten, können Sie mit SizzleJS arbeiten, und mit MooTools haben Sie die Möglichkeit, die gewünschten Funktionssätze auf die gleiche Weise wie - auszuwählen. Modernizr tut es .
  • Bibliotheken sind groß und brauchen einige Zeit zum Lernen. Andererseits ist dies eine einmalige Investition für Entwickler ... und es sieht in Ihrem Lebenslauf gut aus, Javascript-Bibliotheken zu kennen.
  • (BONUS) Bibliotheken sind keine Silberkugel Wenn Sie also das Rad neu erfinden möchten, ist dies definitiv der richtige Weg.

Es ist erwähnenswert, warum Sie eine Javascript-Bibliothek verwenden möchten, für die es viele gibt:

  • Sie müssen kein eigenes Framework schreiben, um Ihre Entwicklung zu unterstützen. Wenn Sie neugierig sind, wie die Dinge funktionieren, können Sie den Code überprüfen, da er Open Source ist.
  • Die Bibliotheken lösen die Browserkompatibilität. Sowohl DOM als auch Javascript weisen einige Unterschiede zwischen den Browsern auf. Vertrauen Sie mir, dies ist eine enorme Zeitersparnis, wenn Sie selbst Korrekturen hacken müssen.
  • Es ist de facto ein Internetstandard, Javascript-Bibliotheken zu verwenden. Die meisten von ihnen sind inzwischen gut dokumentiert, und die meisten Webentwickler (die Javascript kennen) wissen, wie man sie verwendet.
  • Sie geben Javascript nicht wirklich auf, wenn Sie eine Bibliothek verwenden. Sie müssen noch Javascript mit seinen Typen, Objekten, wie Verschlüsse arbeiten usw. kennen.
  • Die meisten Bibliotheken sind modularisiert und das Schreiben von Plugins oder die Verwendung von require und AMD pattern dauert nicht lange.
  • Die CSS-Auswahl von Elementen aus dem DOM ist eine große Hilfe.
  • (BONUS) Sie können sie auch mit CoffeeScript verwenden.

Ich habe in einem Webshop gearbeitet, in dem Vanilla-Javascript unerbittlich verwendet wurde, weil jQuery groß und beängstigend war. Diese Entscheidung, die hauptsächlich von einem einzelnen "Javascript-Entwickler" beeinflusst wurde, war die Quelle vieler Browser-Fehler und langsamer Entwicklung, und der Versuch, in seine Codebasis zu gelangen, war eine haarsträubende Erfahrung. Das Schreiben eines eigenen Frameworks scheint eine gute Idee zu sein, aber wenn Sie neue Entwickler einstellen möchten, können diese nicht schnell einsteigen und helfen. Dann ist da noch das Problem des Busfaktors zu berücksichtigen.

Wie gesagt, ich habe dort gearbeitet ... anderswo gab es grünere Weiden. : ^)

14
Spoike

Ich mische die Verwendung von beidem ziemlich oft. Der Hauptgrund dafür ist, dass Sie für einige Anwendungen (denken Sie an chrome -Erweiterungen) keine browserübergreifende Unterstützung benötigen. Dies bedeutet, dass ich neue Fortschritte wie CSS3 nutzen kann, die beispielsweise Übergänge ermöglichen kann Ihren Code eine Tonne über die Verwendung von jquery vereinfachen.

Auch mache ich oft etwas Brauches. Wie die anderen sagten, sollten Sie das Rad auf keinen Fall neu erfinden. Aber wenn Sie nach verrückten Funktionen gefragt werden, fällt es mir oft viel leichter, sie selbst zu schreiben, als zu versuchen, ein JQuery-Plugin zu hacken, das nahe beieinander liegt, aber nicht perfekt zu Ihnen passt.

Ich habe auch mit Entwicklern gearbeitet, die nur mit jquery arbeiten. Und ich muss sagen, dass sie weitaus häufiger Kompromisse bei der Funktionalität eingegangen sind, als wenn sie kein jquery-Plugin gefunden haben, das das getan hat, was sie wollten.

Irgendwann in der Webentwicklung werden Sie aufgefordert, etwas zu tun, das nicht in einer Bibliothek vorverpackt ist. An diesem Punkt sollten Sie also besser verstehen, wie die Basissprache wirklich funktioniert.

Also TLDC: Verwenden Sie beide, Sie sind im Nachteil, wenn Sie nur Vanille verwenden, und Sie sind im Nachteil, wenn Sie Vanille nicht in- und auswendig kennen und darauf bestehen, immer jquery zu verwenden.

10
Ryan

Das einzige, was ich mir vorstellen kann, dass Sie ohne JQuery nicht auskommen können, ist die Verwendung von JQuery-Plugins. Selbst dann könnten Sie Ihre eigene JS-Bibliothek schreiben, die genau das bietet, was das Plugin benötigt.

Stellen Sie sich das so vor: JQuery ist eine Open-Source-Javascript-Bibliothek, die in Javascript geschrieben ist. Sie können sich die Quelle ansehen und dabei lernen, wie Sie alles tun, was sie tut.

Sie können JQuery nicht verwenden, ohne einfaches altes Javascript zu verwenden. Sie werden document.getElementById Wahrscheinlich nicht verwenden, aber Sie werden trotzdem Funktionen und Variablen auf die Standard-Javascript-Weise definieren. Sie können sogar eine Standardschleife for schreiben.

Der Hauptvorteil der Verwendung von JQuery ist nahezu der gleiche wie bei jeder anderen Bibliothek eines Drittanbieters in einer beliebigen Sprache: Sie müssen nicht so viel Code schreiben, um die für Ihre Anwendung spezifische Logik zu implementieren.

Lassen Sie sich von der Größe nicht abschrecken. Die CDN-Version ist ein ~ 33k-Download, der vom Browser des Benutzers nach dem ersten Seitenaufruf zwischengespeichert wird.

6
Mike Partridge

Wenn Sie sich Sorgen um die Leistung machen, sollten Sie versuchen, wann immer möglich Vanilla js zu verwenden. Frameworks erhöhen nicht nur den Bandbreitenaufwand, sondern auch den Verarbeitungsaufwand. Und jQuery bietet Browserkompatibilität auch für ziemlich alte Browser.

wenn Sie an mobilen Apps oder Spielen (oder beiden zusammen) arbeiten, müssen Sie zuerst Leistung und Ressourceneffizienz erzielen.

jQuery und Plugins können Ihre Entwicklung beschleunigen, aber insbesondere wenn Sie sich auf jquery-Plugins von Drittanbietern verlassen, sollten Sie wissen, was sie im Inneren tun. Viele von ihnen sind schlechte Beispiele für Codequalität und -effizienz.

jQuery kann zwei- bis zehnmal langsamer sein als natives JavaScript. Und es kann Entwickler leicht dazu ermutigen, ihre Benutzeroberfläche nicht richtig zu gestalten und sich zu sehr auf jQuery-Selektoren zu verlassen, die viel langsamer als native sind.

6
Jan Prieser