Die Frage war
Verwenden Sie jemals zwei JavaScript-Bibliotheken auf derselben Seite?
Ich habe diese Umfrage mit zwei Ideen im Kopf erstellt
- Eine Ausrede, um Leute darüber aufzuklären, dass die Verwendung mehrerer Bibliotheken auf derselben Seite generell eine schlechte Idee und unnötig ist.
- Interessante Szenarien aufdecken, in denen die Verwendung mehrerer Bibliotheken auf derselben Seite nützlich/erforderlich war.
Ich sprach speziell über die großen Bibliotheken, die allgemeine Hilfsbibliotheken sind, um die Arbeit mit JavaScript zu erleichtern: jQuery, MooTools, Dojo, Prototype usw. Diese verfügen über DOM-Manipulationswerkzeuge, Selektor-Engines, AJAX-Helfer usw. Ich denke, das ist es, was die meisten Leute meinen, wenn sie "Bibliothek" sagen. Es ist die Verwendung mehrerer dieser Bibliotheken, die allgemein missbilligt und als unnötig angesehen wird. Abgesehen davon, dass es zusätzliche Bandbreite ist und zu Konflikten führen kann, wenn es nicht richtig verwaltet wird, erledigen diese Bibliotheken viele Dinge gleich und es gibt wenig Nutzen in einer Menge doppelter Funktionalität.
Hier sind die Ergebnisse
Es ist keine Überraschung, dass „Nein“ mit 60 % der Stimmen an erster Stelle lag, aber 60 % sind keine überwältigende Mehrheit, die ich erwartet hätte. Satte 40 % sagten, dass sie ja, sie mehrere JavaScript-Bibliotheken auf derselben Seite verwendet hätten. Auch wenn 27 % Ja sagten, ohne sich schuldig zu fühlen, glaube ich nicht, dass wir zwingende Kommentare hatten, die einen Anwendungsfall detaillierten, bei dem das sinnvoll war. Was vielleicht daran lag...
Wie üblich, ein Fehler in der Umfrage
Das Problem bei dieser Umfrage ist, dass „JavaScript-Bibliothek“ nicht gut genug definiert war. Wie ich oben sagte, meinte ich mit Bibliotheken in dieser Umfrage die allgemeinen Bibliotheken, aber „Bibliothek“ kann viel mehr bedeuten. Twitters @anywhere ist eine JavaScript-Bibliothek, Modernizr ist eine JavaScript-Bibliothek, Raphaël ist eine JavaScript-Bibliothek. Es gibt überhaupt kein Problem, diese in Verbindung mit einer allgemeinen Bibliothek zu verwenden, daher ist die Verwendung mehrerer Bibliotheken in diesem Fall überhaupt kein großes Problem. Ich bin sicher, das ist es, was viele Leute im Sinn hatten, als sie für die Verwendung mehrerer Bibliotheken gestimmt haben.
Abschließende Gedanken
Wenn Sie abschließende Gedanken zu diesem Thema haben, sagen Sie Ihre Meinung. Nächste Woche gibt es wieder eine neue Umfrage.
Ich habe den Begriff JavaScript-Framework als austauschbar mit JavaScript-Bibliothek gehört. Sind sie dasselbe?
Meiner Meinung nach sind „jQuery, Mootools, Prototype usw.“ Frameworks und „Modernizer, @nywhere API, usw.“ sind Bibliotheken.
Ja, das ist der eigentliche „Fehler“ hier… der Typ kennt den Unterschied zwischen einer JS-Bibliothek und einem JS-Framework nicht? Komm schon :/
Ich würde auch dafür stimmen, wenn es nach mir ginge.
@Harry – gib mir keine Schuld: http://cl.ly/2fFC
Ich habe mehrere Bibliotheken (oder Frameworks) verwendet, als der Kunde mich explizit bat, ein Plugin zu verwenden, das nicht in jQuery geschrieben ist… denn alles, was ich selbst schreibe, mache ich mit jQuery… fühlte mich danach schuldig :)
Eine gute JS-Bibliothek oder ein gutes JS-Framework greift nicht in den globalen Scope oder native Objekt-Prototypen ein, daher sollten Kompatibilitätsprobleme keine Sorge bereiten. Dojo hat beispielsweise explizite Unterstützung, um die Verwendung mehrerer Versionen von sich selbst auf einer einzigen Seite zu ermöglichen!
Warum? Weil es in großen Projekten, bei denen die Entwicklung über viele Entwickler über viele Jahre hinweg stattfindet, manchmal notwendig wird, Dinge auf diese Weise zu tun. Es ist nicht ideal, aber real!
Hier ist ein Anwendungsfall für Sie
Ich möchte eine extrem einfache DOM-Manipulation, also nehme ich jQuery, aber ich möchte auch eine ordentliche Möglichkeit, interne Daten darzustellen, und weil JavaScript OOP etwas heikel ist, nehme ich Prototype (oder Mootools – persönlich benutze ich Prototype) für eine gute intuitive OOP-Simulation.
Und natürlich möchte ich, dass es extrem schnell ist, deshalb nehme ich JS-APIs/Bibliotheken (keine Frameworks meiner Meinung nach).
Natürlich ist das nur für RIESIGE Projekte, ich habe es in 4 Jahren nur zweimal gemacht.
Und bezüglich der Gewohnheit von Prototype, Natives zu verändern, nun, das ist etwas, das Ihr Projekt akzeptieren muss. Es ist sowieso das Beste.
MooTools hat extrem einfache DOM-Manipulation *und* schönes OOP. :P
Ich dachte, Sie meinten so etwas
aber ich schätze, ich habe mich auch geirrt. weil es jQuery ist, also wusste ich wirklich nie, was Sie meinten. Ich habe Nein gesagt, weil ich dachte, Sie meinten, sie für unterschiedliche Aktionen zu verwenden, wie zum Beispiel, wenn Sie eines für eine jQuery-Diashow hätten, aber eines, das Sie nicht selbst gemacht haben. Ich weiß es nicht, ich bin immer noch völlig ahnungslos.
Ich hatte dieses Problem in einem meiner Projekte oft. Wir arbeiteten mit Rails, also hatten wir bereits viele Rails-Ajax-Helfer verwendet, die Prototyp-Code generierten. Später mussten wir einige jQuery-Plugins verwenden und das führte zu Konflikten mit Prototype.
Wir brachten die beiden zum Laufen, aber ich hasste es wirklich, beide Frameworks zusammenlaufen zu lassen. Glücklicherweise fanden wir ein Prototyp-Plugin, das die gleiche Funktionalität hatte, und wechselten dazu.
Meiner Meinung nach ist die Verwendung mehrerer Frameworks eine schreckliche Idee. Die meisten JavaScript-Frameworks bieten Ihnen genügend Leistung, um nichts anderes zu benötigen.
Sobald ich Begriffe wie DOM, Native Object Prototypes und so weiter höre, werden meine Augen glasig. Ich habe mich nie hingesetzt und tatsächlich nachgesehen, wie die Dinge über HTML, PHP und CSS hinaus funktionieren, also habe ich buchstäblich keine Ahnung, was diese Begriffe bedeuten. Das steht für die Weihnachtsferien auf dem Programm. Ich weiß nur, 'mach das = das passiert'. Affe sieht, Affe tut.
Vielleicht sollte die nächste Umfrage lauten: Bibliothek oder Framework? haha
Kein Scherz, oder?
So nennen sie sich selbst
jQuery = Bibliothek
YUI = Bibliothek
ExtJS = Bibliothek
MooTools = Framework
Prototype = Framework
Dojo = Toolkit
Ich dachte, sie wären alle dasselbe. Man lernt jeden Tag etwas Neues, schätze ich.
Criss, vielleicht ist es an der Zeit, einen Beitrag zu schreiben, der den Unterschied zwischen jedem Typ erklärt und wann man sie verwenden (und nicht verwenden) sollte, da viele von uns die Begriffe falsch verstehen. :)
MooTools leistet viel mehr als jQuery… jQuery konzentriert sich wirklich nur auf DOM-Sachen. Siehe http://jqueryvsmootools.com/. Manche Leute würden jQuery als „Bibliothek“ bezeichnen, nur deswegen.
Frameworks bieten viel mehr Funktionalität über ihren zugrunde liegenden Bibliotheken hinaus, wie z. B. vorgefertigte Akkordeon-Menüs, modale Dialoge, Bilder-Vergrößerer usw. Daher kann ein Framework typischerweise als eine große Sammlung von Plugins in einem schönen Paket angesehen werden. Deshalb ist MooTools funktionsreicher als jQuery – denn bei jQuery müssen Sie immer noch all den schicken Kram oben programmieren.
jQuery hat zwar sein eigenes Framework – es heißt jQuery UI :-) Ich benutze es jedoch eher nicht, da es viel Overhead ist, wenn man nur ein paar kleine Plugins braucht.
Außerdem würde ich Prototype als Bibliothek betrachten, während sein angesehenes Framework Scriptaculous wäre.
Dann wieder, ich liege wahrscheinlich mit meinen Definitionen im Vergleich zu den Meinungen anderer falsch.
Es geht wirklich nicht darum, den Unterschied zwischen einem Framework und einer Bibliothek nicht zu kennen. Eher eine Frage der Semantik. Wie Chris gerade gepostet hat, haben sie alle ihre eigenen Ideen, was sie wirklich sind. Für mich fühlt sich „Bibliothek“ richtiger an als „Framework“. Wenn ich das Wort „Framework“ sehe, denke ich an etwas, das eine architektonische Struktur definiert, wie Rails oder CakePHP. Die großen JavaScript-Bibliotheken sind wirklich nur das: Bibliotheken, die Sammlungen von Werkzeugen enthalten, die die einfachere Nutzung von JavaScript erleichtern. Sie definieren keine (oder empfehlen sogar keine) bestimmte Struktur oder „Framework“.
Tatsächlich ist bei YUI3 YUI definitiv ein „Framework“ in dem Sinne, dass es eine unglaublich reiche Struktur und ein Architekturmuster für komplexe Anwendungen bietet.
Ich glaube, ExtJS und Dojo können in diesem Sinne auch als Frameworks betrachtet werden.
Wir versuchen, unsere Projekte auf eine Bibliothek zu beschränken, wie die Umfrageergebnisse, und stellen fest, dass jQuery die meisten Grundlagen abdeckt, Liebe jQuery! LT
Es ist eine großartige Teilung über diese Multiple-JavaScript-Umfrageergebnisse. Es ist sehr nützlich. Danke fürs Teilen
Interessante Frage, sie war in letzter Zeit ein Problem bei meiner Entwicklung. Kurz gesagt, das einzige Mal, dass es ein Problem war, ist mit WordPress (unzählige Plugins). Man kann nie die gleiche Version zum Laufen bringen, man gerät zwangsläufig in Schwierigkeiten. Wenn Sie in der Klemme stecken, googeln Sie nach "JQuery NoConflict" und schämen Sie sich für Ihren Workaround.
Ich persönlich versuche, mich auf eine zu beschränken, aber das bin nur ich :D
Auch hier hängt es davon ab, woran Sie arbeiten und was Ihr Budget ist… wenn die Seite ein hohes Budget hat, ist die Antwort NEIN, aber wenn ich eine Seite mit niedrigem Budget erstelle, benutze ich normalerweise vorhandene Joomla-Module/Plugins/… ohne mich darum zu kümmern, welche Bibliothek sie verwenden.
Dennoch, wenn ich kann, versuche ich, mich auf jQuery und vielleicht MooTools zu beschränken. Außerdem überprüfe ich normalerweise, ob Geschwindigkeit der entscheidende Faktor sein wird (wettbewerbsmäßig).
Wie immer hängt es davon ab, was Sie tun wollen, wie viel Zeit Sie dafür aufwenden und wie viel Sie dafür bezahlt bekommen :)
Vergessen Sie nicht den menschlichen Faktorfehler… also „Ich benutze mehr als eine… aber ich will nicht wie ein Idiot aussehen.“ Tolle Umfrage aber Chris. Danke fürs Teilen.
Ich benutze jQuery für alle meine JavaScript-Bedürfnisse.
Um ehrlich zu sein, die einzige, die ich je benutzt habe, ist jQuery. Ich bin kein wirklicher „Programmierer“, also versuche ich, die Menge an Programmierung (PHP, JavaScript usw.) zu minimieren, die ich tun muss, außer für das Wesentliche wie das Erstellen von WordPress- oder Drupal-Themes usw.
Das gesagt, ich denke, selbst wenn ich mehr als nur jQuery kennen würde, würde ich immer noch nur 1 Bibliothek auf einer Seite verwenden. Generell, wenn es ein Plugin gibt, das z. B. ein Mootools-Plugin ist, dann hat zu 90 % jemand, irgendwo, es für jQuery modifiziert, es sei denn, es ist kein sehr weit verbreitetes Plugin.
Ich kann diese Umfrage mit serverseitigen Entscheidungen vergleichen. JavaScript ist eine Sprache, genau wie PHP. Und jQuery, Mootools und Dojo sind Frameworks, genau wie CakePHP oder CodeIgniter. Diese Bibliotheken/Frameworks sind also nur Werkzeuge, die Ihnen helfen, einfacher JavaScript zu schreiben. Und sie sind alle leistungsfähig genug, es gibt keinen Grund, sie zu vermischen. IMHO, die Leute, die zwei Frameworks gleichzeitig verwenden, sind einfach zu faul, etwas Code umzuschreiben, um nur ein Framework zu verwenden. Wenn Sie das verstehen, ist es schließlich nur JavaScript, die Dinge werden einfacher. Ich denke, das Problem ist, dass Leute versuchen, JavaScript anhand eines Frameworks zu lernen. Es ist, als würde man schwimmen lernen mit einem Jetski.
All das oben Genannte!
1.) Nein – Ich vermeide es wann immer möglich. 2.) Aber Ja, ich tue es, wenn ich muss, zum Beispiel, wenn der vorherige Entwickler die Website mit Prototype-abhängigen Funktionen übersät hat und ich jQuery verwenden möchte, weil ich mich damit wohler fühle.
Am Ende glaube ich, dass ich einen GUTEN GRUND habe, es zu tun, aber ich fühle mich immer noch SCHULDIG dabei. Und dank JQuerys NoConflict()-Deklaration funktioniert alles und es ist KEIN GROSSES PROBLEM.
Aber wirklich, 1.) Nein.
Sehr nützliches Skript..nette Erklärung..danke fürs Posten
Ja, die Verwendung mehrerer JS-Bibliotheken ist eine schlechte Idee.