Mittlerweile existiert eine ansehnliche Anzahl von JavaScript Frameworks, so daß sich mitunter die Frage stellt, welches denn jetzt “das beste” Framework sei, oder welches man denn am besten verwenden sollte. Ich persönlich halte es da mit dem Grundsatz:
“There is no right or wrong, there’s just the way you do it.”
Jedes Framework hat gewisse Stärken und Schwächen, und letztendlich ist es immer noch eine Art persönlicher Geschmack, wie sich das Framework denn benutzen lässt, wie der Code aufgebaut ist.
Prototype ist eines der am weitesten verbreiteten Frameworks und zeichnet sich durch seine Vielseitigkeit aus. Es kommt auf einer ansehnlichen Reihe von Webpräsenzen wie z.B. Apple, NASA und Twitter zum Einsatz.
Der größte Teil von Prototype sind die DOM-Erweiterungen, die es mitbringt. Ein durch die $()Funktion erweitertes Element bringt so einige nützliche Methoden mit. So kann man z.B. mit dem einfachen Ausdruck $(‘comments’).addClassName(‘active’).show(); dem Element mit der id ‘comments’ die CSS-Klasse ‘active’ zuweisen und dieses anschließend sichtbar machen.
Hierbei fällt dem geneigten jQuery Benutzer vielleicht auf, daß ein ähnliches Beispiel in “seinem” Framework ähnlich funktioniert – wozu also jetzt dann Prototype? Eine berechtigte Frage, die sich jedoch mit einem Blick auf den restlichen Funktionsumfang und die Arbeitsweise beantworten lässt:
Während die $() Funktion unter jQuery lediglich die Funktion eines CSS-Selektors übernimmt, ist sie unter Prototype ein Shortcut für document.getElementById(), der darüber hinaus eine Vielzahl an Methoden bereitstellt, bzw. die Möglichkeit bietet, selbst eigene Methoden auf sehr einfache Art und Weise für das Element zu definieren. Doch damit nicht genug:
Die $$() Funktion entspricht im Wesentlichen des $()-Pendanten in jQuery, wobei sich mit Prototype z.B. solche Vorhaben sehr einfach schreiben lassen: $$(‘#content table.listing tbody > tr:nth-child(even)’).invoke(‘mark’); Dieser Ausruck liefert alle geraden Zeilen in allen Tables mit der Klasse ‘listing’, zurück die sich innerhalb des Elements mit der id ‘content’ befinden, und wendet die Funktion ‘mark’ auf jede dieser Zeilen an.
Mit der Funktion $F() liefert Prototype jeweils den aktuellen Wert des übergebenen Elements eines Formulars zurück – sehr nützlich bei Select-Elementen.
Weiterhin bietet Prototype eine sehr gelungene Implementation von diversen nützlichen Methoden rund um JSON.
Richtig komfortabel wird es aber erst richtig mit den diversen Ajax-Methoden des Framworks. Prototype stellt hier eine bis ins Detail konfigurierbare Request-Methode zu Verfügung, die z.B. neben den standardmäßigen xmlHttpRequest Stati sogar HTTP Response Codes als Events liefert. Auch hier zeigen sich die Stärken von Prototype z.B. bei der Übergabe von JSON-Strings als Response. Spezielle Varianten des Ajax-Requests stellt Prototype mit dem Ajax.Updater und dem Ajax.periodicalUpdater zu Verfügung. Ersterer kümmert sich um die Aktualisierung eines gegebenen Elements mit den aus dem Ajax-Request generierten Daten, letzterer tut dies zeitgesteuert, wobei sich die Frequenz der Requests sogar auch noch von ihrer Rückgabe abhängig machen lässt.
Die auf Prototype basierende Effekt- und Interfacebibliothek Scriptaculous ergänzt das Framework sehr gut und fügt sich von der Nomenklatur und Handhabung nahtlos in Prototype ein. Und für die Freunde von jQuery bietet die jQuery.noConflict()Methode einen bequemen Weg, beide Frameworks gleichzeitig einzusetzen, indem es die Kontrolle des $ wieder an die ursprüngliche Bibliothek zurückgibt.




Schöner Artikel! Ich setze bis jetzt nur jQuery ein (und selbst damit kenne ich mich eigentlich viel zu wenig aus), irgendwann muss ich mir mal die Zeit nehmen, mir auch die anderen Frameworks anzusehen. Prototype klingt jedenfalls interessant.
Gruß,
antu
Hallo Rüdiger.
Sehr interessanter Artikel. Ich hoffe da kommen noch mehr.
Gruß
Peter