jQuery und YUI 3: A Tale of Two JavaScript-Bibliotheken

27. Oktober 2010 um 14.08 Uhr von Mark Rall | In Entwicklung , YUI-Implementierungen | 5 Kommentare

Kürzlich hatte ich die Gelegenheit, meine erste JavaScript-Front-End-Anwendung zu erstellen. Was folgt ist eine kurze Geschichte der Entdeckung und Entwicklung, die etwa beim Versuch, Tools, die nicht für den Job bei der Hand geeignet sind, verwenden kommt. Es ist ein Bericht über das Lernen durch die Entwicklung die gleiche Front-End-Anwendung mit zwei sehr unterschiedlichen Bibliotheken, jQuery und YUI 3 erworben. Details zu dem Client und dem Projekt wurden absichtlich weggelassen.

Überblick

Das Projekt umfasste die Umgestaltung von mehreren unterschiedlichen Flash-Tools in einer einzigen interaktiven Anwendung auf offenen Standards für eine große Content-Publisher basiert. Von hoher Bedeutung, musste die Anwendung hoch mit einer kleinen anfänglichen Fußabdruck durch die große Zahl der Page Impressions täglich erhält der Kunde optimiert werden. Mehrere Phasen beteiligt waren, mit dem ersten in einer anfänglichen proof of concept.

Das Konzept beinhaltete die Entwicklung einer Ansicht von dem, was würde das ausgefüllte Antragsformular sein. Es bestand aus:

  • Eine erste Seed-Datei (<1 KB) verantwortlich für das dynamische Laden von beliebigen Frameworks (zB jQuery oder YUI 3) und der erstmaligen Anwendung Datei.
  • Die Entwicklung und Integration von jQuery-Plugins zur Unterstützung von Formular-Element Styling und Validierung und dynamischen Grafik-Visualisierungen.
  • Die Erzeugung und der Bevölkerung von UI, basierend auf Benutzereingaben, Konfigurationsstandardeinstellungen und Speicherort der Anwendung innerhalb der Verlags-Website.
  • Die Berechnung und Darstellung von Informationen bezogen auf die Eingabe des Benutzers.

Im Interesse einer vollständigen Offenlegung, hatte meine eigene Erfahrung bis zu diesem Punkt bei der Entwicklung von kleinen, eigenständigen Lösungen, die Art, von denen Sie in der Regel als Plugins könnte beschreiben gewesen. Dazu gehörten dynamische UI-Komponenten wie Bild Karussells, interaktive Karten und Twitter / Flickr-Widgets. Zum Zeitpunkt der ersten Dilettantismus mit JavaScript, jQuery populär war, einfach zu erlernen und mir erlaubt, schnell erlernbar sind für die Projekte, die ich zum Arbeiten benötigt wurde. Aber all das waren eigenständige Einheiten und hatte keine Notwendigkeit, mit anderen Code oder als Teil einer größeren Anwendung interagieren.

First Attempt

Am Abschluss der ersten Phase des Projekts, wurde es schmerzhaft offensichtlich, dass ich mit einer ganz anderen Tier zu tun als das, was ich gewohnt war. Gestützt hatte wenig Erfahrung in der Organisation Code, meinen Code schnell zu unorganisiert, ineffizient und repetitiv. Als ein Ergebnis war der erste Teil dessen, was eine viel größere Anwendung werden nur langsam geladen. In der Tat dauerte es 8 Sekunden, diesen einzigen Proof of Concept zu generieren. Eine große Änderung war notwendig, und während ich mit angesehen hatte, eine kleine Bibliothek wie Dean Edwards Base- oder John Resigs einfache JavaScript-Vererbung Muster an Klasse-basierte Vererbung zu jQuery hinzuzufügen, beschloss ich, einen Schritt weiter gehen.

Was ich wollte, war eine komplette, ausgereifte Rahmen, innerhalb dessen auf meine erste OO-Anwendung zu entwickeln. Etwas, das effektiv führen würde mir durch den Vorgang. Bei der Überprüfung der verfügbaren Bibliotheken habe ich beschlossen, YUI 3 aus den folgenden Gründen anzunehmen:

Take Two

Integration von YUI 3 brachte mehrere direkte und indirekte Vorteile für das Projekt:

  • Erbschafts-basierte Architektur und Klasse-Management durch die Attribut -Schnittstelle, und Base- und Widget- Klassen produziert leistungsfähige, wiederverwendbare und organisierter Code.
  • Trennung von Präsentations-Modell ab und Daten mit Hilfe des Widget -Klasse, um alternative Ansichten (Inline-oder Overlay) auf den Ort der Anwendung innerhalb der Website der Basis zu machen.
  • Sandbox und dynamischen Modul Integration durch YUI.use ().
  • Cross-Browser-Konsole Debugging mit YUI-Konsole .
  • Auf Save, Performance-Optimierung mit YUI Compressor in Eclipse.
  • Einfache Einbindung und Integration von bereits vorhandenen jQuery-Plugins.
  • Auf Save, mit automatisierten Code-Dokumentation YUIDoc .

Das Endergebnis war ein glücklicher Kunde und ein fertiges Produkt mit Sub-Second-Ladezeiten (wir erinnern uns dauerte es 8 Sekunden, um die anfängliche Proof of Concept zu laden).

Lessons Learned

Wählen Sie das richtige Werkzeug für den Job

Beim Lesen dieser Post Ich bin sicher, einige Leser werden dies als anti-jQuery anzuzeigen. Überhaupt nicht. jQuery ist ein fantastisches Projekt verantwortlich für viele Innovationen. Aber wie bei jedem Werkzeug, es hat seine Stärken und einen Verwendungszweck. Seine Stärke liegt bei der Normalisierung der Browser-Inkonsistenzen, eine Senkung der Eintrittsbarriere für den Anfänger und Verbesserung der Effizienz der erfahrene Programmierer. Das primäre Lernen, das aus dem Projekt kam, war, dass man nicht auf ein Werkzeug für jeden Job angewiesen. YUI baut auf jQuery kann auch bietet eine gut architected Anwendungs-Framework bieten. Aber es ist fair zu sagen, dass es zu einem Preis kommt, siehe den nächsten Punkt.

Steile Lernkurve

Man braucht Geduld, vor allem beim Schreiben Ihrer ersten Anwendung mit einer unbekannten Bibliothek wie ich. Doch der Erfolg ist immens. Durch das Erlernen einer anderen Bibliothek, wird nicht nur Ihre JavaScript-Fähigkeiten zu verbessern, werden Sie auch ein tieferes Verständnis dafür, wie Bibliotheken Arbeit und den Nutzen bei weitem. Ich versuche, etwas Neues über YUI Alltag erfahren und je mehr ich lerne, desto mehr bin ich in Ehrfurcht vor den Gedanken und die schiere Talent, das in den Aufbau YUI weg ist.

Laden Sie nur Inhalte, wenn Sie es brauchen

Während es sicherlich einfacher, nur programmatisch, um alles, was Sie brauchen im Voraus geladen werden kann, gewannen die Performance-Verbesserungen als direkte Folge von Lazy Loading Content nur dann, wenn Sie es brauchen ist riesig. Dies war einer der wichtigsten Faktoren für eine drastische Verbesserung der Leistung der Anwendung.

Interagieren Sie mit dem DOM so wenig wie möglich

Dieser Punkt bezieht sich nicht auf die spezifische Bibliothek angewendet wurde. Durch das Zwischenspeichern der erforderlichen DOM-Elemente und HTML-Templates unter Verwendung mehr, fiel UI-Rendering-Zeit beträchtlich. Die Knoten können zwischengespeichert werden mit Y.one (), während der Knoten-Listen können eingefangen mit Y.all () werden. Auch Y.Node.create () war sehr nützlich bei der effizienten Umwandlung großer Text-Strings von HTML-DOM-Elementen, um vor dem Einsetzen.

Erfahren Sie von Verwenden Sie beispielsweise eine EUR

Bei der Verwendung von YUI-Bibliothek ausgeliefert EUR haben wir beschlossen, alle Vermögenswerte des Projekts über EUR zu liefern. Das war wahrscheinlich der nächste größte Faktor für die Performance-Verbesserung.

Pub, sub Trubel

Für die erfahrene Programmierer da draußen, versuchen, nicht an diesem einen lachen. Nach dem Schreiben nicht viel mehr als Plugins in der Vergangenheit verwendet worden, ich hatte keine Ahnung, wie Anwendungen sollten intern zu kommunizieren. Selbst nach der Lektüre "Custom Events können Sie die interessantesten Momente oder Ereignisse in Ihrem eigenen Code zu veröffentlichen, damit andere Komponenten auf der Seite auf diese Ereignisse zu abonnieren kann und auf sie reagieren," Ich habe noch verpasst.

Wie sich herausstellt, Publish-and-subscribe YUI Die maßgeschneiderten Event-Modell funktioniert wunderbar für Inter-Klasse und Inter-Objekt-Kommunikation. Sie können sogar abonnieren, Pre-und Post, um Ereignisse und beinhalten dynamische Logik zu Blasenbildung auf der Grundlage bestimmter Bedingungen zu unterdrücken.

Integrieren Best Practice in Ihren Workflow

Mit Eclipse konnten wir JSLint und YUI Compressor in den Build-Prozess zu integrieren. Einfach ausgedrückt, wird jedes Mal, wenn Sie Strg / Befehl + S Ihr JavaScript-Code validiert und optimiert. Das heißt, Sie sind gegen optimiert, Produktion Grade-Code von der ersten Zeile des Codes testen. Es bedeutet auch, dass Sie nicht vergessen, in der hektischen letzten Rennen der Lieferfrist zu optimieren.

YUI Learning on the Job

Obwohl jeder hat eine andere Lernstil, dachte ich, ich teile, welche Ressourcen ich YUI mit einem bestimmten Ziel vor Augen lernen verwendet.

Abschluss

YUI 3 ist ein voll ausgestattetes, reifen und sich ständig weiterentwickelnden Bibliothek eignet sich für kleine bis große Projekte. Als Front-End Web-Anwendungen immer komplexer werden, wird der Bedarf an Bibliotheken wie YUI wachsen. Während für den Uneingeweihten es eine erschreckende Erfahrung auf den ersten sein können, wenn Sie dabei bleiben du wirst belohnt werden.

Über den Autor: Mark ist Senior Frontend Entwickler bei VI , eine multidisziplinäre Agentur für Kommunikation im Jahr 1981 mit einem Design, Ausrichtung etabliert. Heute ist die Agentur verbindet seine Arbeit in der digitalen, Direkt-und Design-Disziplinen, um messbare Ergebnisse für eine breite Palette von B2C-und B2B-Kunden zu liefern.

Teilen und zu erweitern: Lesezeichen mit del.icio.us | Digg it! | reddit!

5 Kommentare

  1. Also, als jemand, der YUI verwendet hat, bevor jQuery nutzt derzeit eine Menge zu, weiß ich nicht sehen dies als Seitenhieb auf jQuery. Ich weiß auch nicht sehen dies als eine fundierte Grund, YUI über etwas anderes zu verwenden. Lazy Loading ich auf jeden Fall verstehen. Eine steile Lernkurve ist nicht ein Plus. Da es sich im Vergleich zu jQuery hingewiesen, Google bietet auch eine gehostete EUR von jQuery Builds. Event-Handling mit benutzerdefinierten Ereignissen ist eine ECMAScript-basierten Sprache, was nicht spezifisch für YUI. Sie können den Autor jede Bibliotheken und Code in Eclipse noch mit Kompressor oder minifier, es zu nehmen, die in Größe.

    Ich bin froh, Sie hatten Erfolg mit YUI. Es war meine erste Bibliothek, und ich habe eine Schwäche für die ganze Dokumentation und Forschung veröffentlichte Yahoo geschaffen, um dazu beitragen, die Kenntnis von JS Rookies überall hat.

    Kommentar von Jeffrey Gilbert - 27. Oktober 2010 #

  2. @ Jeffery Gilbert

    Vielen Dank für Ihr Feedback. Ich bin mir nicht sicher, ob Sie nach einer Antwort waren aber hier geht sowieso ...

    "Ich sehe das nicht als begründet Grund zu YUI über etwas anderes zu verwenden". Es war nicht meine Absicht. Ich wollte nur teilen die Erfahrung, die ich beim Bau meines ersten Web-App mit jQuery hatte und wie ich YUI stattdessen kam. Da der Haftungsausschluss für die meisten Finanzprodukte geht 'Betrachten Sie Ihren eigenen individuellen Gegebenheiten vor ...'. Für mich ist die Zeit, es war die Bandbreite der Werkzeuge zur Verfügung, das Niveau der Dokumentation und vor allem das Anwendungs-Framework. Natürlich darf nicht suite andere.

    "Steile Lernkurve ist nicht ein plus". "Lessons learned" nicht beabsichtigt war, um ein Nutzen-Liste sein. Im Interesse einer vollständigen Offenlegung Ich wollte auch darauf hinweisen, einige der schwierigsten Aspekte, nicht nur um fair zu sein, um jQuery sondern auch auf solche Betrachtung, beginnend mit YUI 3. Der wichtigste Punkt ist dabei zu bleiben. Ich glaube, es gemacht ist mir ein viel besserer Programmierer.

    "Google bietet auch eine gehostete EUR von jQuery builds". Und YUI 2,8 übrigens. Beim Vergleich eines lokal gehosteten Version von Yahoos YUI vs EUR der Performance-Schub war signifikant. Es markiert für uns, wie wichtig unter Verwendung eines EUR ist auf die Gesamtleistung. So sehr, in der Tat, dass wir alle Anwendung Vermögenswerte über EUR und uns unter einer Sekunde Ladezeiten für eine ziemlich große Nutzlast dienen entschieden. Es ist eine Lektion gelernt, nicht eine Rechtfertigung für YUI.

    "Event-Handling mit benutzerdefinierten Ereignissen ist eine ECMAScript-Sprache". Vereinbart, sind benutzerdefinierte Ereignisse keine Besonderheit YUI. Es ist, wie sie in den größeren Rahmen, der mir erlaubt, einfach Klasse basierte Anwendungen zu erstellen sind integriert. Seitdem bin ich ein wenig über Node.js und andere Veranstaltung basierte Paradigmen gelernt. Es ist wirklich meine Augen auf zu Ereignis-basierte Programmierung eröffnet. Hoffentlich können andere die gleiche Erfahrung Aha-Erlebnis.

    "Sie können den Autor jede Bibliotheken und Code in Eclipse noch mit Kompressor oder minifier". Ja Sie können. Bei der Beurteilung der verschiedenen Werkzeuge / Lösungen für ein Projekt einige der Entwickler einer Entscheidungsfindung unweigerlich kommerziell bezogen werden. Wie baue ich mir ein qualitativ hochwertiges Produkt schnell? YUI und seine Eltern YDN bieten eine Fülle von Informationen für diejenigen wie mich, die ausgehend werden im Frontend-Anwendungsentwicklung. Hier war eine Bibliothek mit einer Reihe von Performance-Tools und Dokumentationen, die mich zum Laufen zu bringen schnell erlaubt. Seitdem habe ich auch entdeckt, Rockstarapps 'Workbench , die auch passt in Eclipse und automatisiert den Optimierungsprozess. Also ja du kannst, aber für mich war YUI am schnellsten mit einem Minimum an Aufwand zu implementieren.

    "Ich habe ein Faible für die Dokumentation und Forschung veröffentlichte Yahoo geschaffen, um dazu beitragen, die Kenntnis von JS Rookies überall hat." Ich auch, und ich denke, du hast recht, es wird. Vor allem, da die Nachfrage für dynamische, funktionsreiche Frontends erhöht.

    Nochmals vielen Dank für Ihr Feedback. Hoffentlich habe ich es besser in der Lage, einige meiner ursprünglichen Absicht zu klären.

    Kommentar von Mark Rall - 27. Oktober 2010 #

  3. Wir hatten eigentlich das Gegenteil zu Ihnen. Bei der Vorbereitung eine sehr komplexe Anwendung in YUI zog dann nach jQuery während eines re-write. Der Hauptgrund war aufgrund Coding-Style, wir sind ein Ruby-Haus und niemand wirklich mit der Art, YUI codiert wird geklickt. jQuery war ein viel besserer Passform für uns, da es viel mehr rubyish mit seiner Umsetzung Stil ist.

    Ich wünschte oft, jQuery realisiert mehr grundlegende Sprach-Erweiterungen fehlen jedoch JS Kern.

    Kommentar von Jamie Dyer - 28. Oktober 2010 #

  4. Stimme voll und ganz. Ihr Punkt über Architektur, ich völlig verstehen, aber vermute, dass es auf diejenigen, die keine (oder verstehen) SE Design-Patterns, wie Publisher / Subscriber ist verloren. YUI definitiv die Messlatte, indem sie diese in JS Entwicklung. Gibt es noch etwas gibt, hat AttributeProvider (YUI 2) - die übrigens, ich war froh zu sehen, enthalten als Kern Teil 3! Tolle Arbeit von der YUI Ingenieure und eine großartige Post!

    Kommentar von Matt - 28. Oktober 2010 #

  5. @ Jamie Dyer

    Hey Jamie. Sie werfen eine wirklich interessante Punkt, um in meinem Gehirn ist seit dem ich zuerst lesen Ihren Kommentar an diesem Morgen, taumelte aus dem Bett umklammert mein Telefon.

    Vielleicht wird, muss zum Teil mit Zeitdruck oft als Teil des Projekt-Lebenszyklus erlebt zu tun. Die Auswahl des richtigen Werkzeugs im Idealfall kommt darauf an, am besten passen und ich denke, es ist sicher zu sagen, dass der Wunsch nach Standards und die Optimierung eine gegebene diesen Tagen sind. Was sind also die anderen potentiellen Beeinflusser?

    Zeit
    Nicht nur, wie lange es dauert, einen Kandidaten Rahmen einmal ausgewählt, sondern auch die Auswahl oder Review-Prozess selbst zu lernen. Von diesem Standpunkt jQuery hat die Kante. Da das Motto ": Die Write Less, Do More, JavaScript Library jQuery" geht. Es kann eine große Anmaßung meinerseits sein, aber ich denke von jQuery als Designer oder Anfänger-Bibliothek. Es erlaubt Ihnen, aufstehen und laufen schnell auf diesen grundlegenden Aufgaben, die eine UI-Fromm bereichern Perspektive eines Designers. Darin können auch Anzeigen / Ausblenden Inhalt, Übergänge, DOM-Manipulation, Ajax und mehr.

    Coding Style
    Ich heute darüber nachdenke, scheint es offensichtlich, dass ein Entwickler-Erfahrung ist auch einflussreich. Sie haben darauf hingewiesen, dass ein Ruby-Programmierer scheint beeinflusst Ihrer Entscheidungsfindung haben. Und warum auch nicht. Es ist vollkommen gültig Argumentation. Wieder scheint es, wieder zu kommen, um kommerziellen Entscheidungsfindung. Wir natürlich nur für die Lösungen, die am wenigsten präsentieren den Widerstand schweben.

    Ich für meinen Teil, nicht dass er irgend eine frühere Erfahrung mit der Programmierung auseinander bilden zwei Module von Java an der Uni (College) Ich musste Einflüssen. Ich war, wie man Klassen schreiben, verwalten Attribute und vor allem die Leistung konzentriert. Vielleicht wäre es anders würde ich weiterhin in PHP oder Java plantschen können.

    So sind die Fragen für mich sind:

    Was haben Sie verwenden, um Applikations-Management zu behandeln?
    Wenn Sie externe Tools verwendet werden, um jQuery zu verbessern, was waren die Auswirkungen auf die Lieferfristen des Projekts?

    Dank Jamie, tolle Kommentar.

    Kommentar von Mark Rall - 28. Oktober 2010 #

Leider ist die Kommentarfunktion zu diesem Zeitpunkt geschlossen.

Hosted by Yahoo!

Copyright © 2006-2012 Yahoo! Inc. Alle Rechte vorbehalten. Datenschutz - Allgemeine Geschäftsbedingungen

Präsentiert von WordPress auf Yahoo! Web Hosting .