molily: jQuery: Widget-Konzept

Beitrag lesen

Mir erschließt sich jetzt nicht auf Anhieb, wann das Widget-Konzept besser ist als die "schlichte" Vorgehensweise.

Die Frage habe ich mir auch schon einmal gestellt und bin zu dem Ergebnis gekommen: Das ist keine vernünftige objektorientierte Architektur. :)

Zuerst einmal gibt es das einfache jQuery-Plugin-Konzept, bei dem jQuery.prototype um eigene Methoden erweitert wird. Die Konvention ist, dass hier wieder das jQuery-Objekt zurückgegeben wird (für Methoden-Verkettung).

$('#foo').meinPlugin()

Das Widget-Konzept versucht darauf aufzubauen, aber die Möglichkeit zu geben, die Widget-Methoden von außen aufzurufen. Ich kann ein Widget so installieren:

$('#foo').meinWidget()

Wie greife ist aber nun auf das Widget zu und rufe dessen Methoden auf? So ist man auf diese Idee gekommen:

$('#foo').meinWidget("methodeVomWidget", "parameter", ...)

Das ruft methodeVomWidget auf und übergibt die Parameter. Es wird von der Methode erwartet, wieder das jQuery-Objekt anstatt das Widget-Objekt zurückzugeben.

Ich halte das für ziemlichen Quatsch. Es gibt m.M.n. keinen Grund, sich so sklavisch an die jQuery-Konvention zu halten. Das soll wohl für jQuery-Einsteiger gedacht sein, die mit einem gesonderten Widget-Objekt *scheinbar* nicht klarkommen würden. (Das sehe ich nicht so.)

jQuery ist DOM-zentriert; ein jQuery-Objekt ist immer eine Elementliste und bietet Methoden, um darauf zu operieren. Das Widget-Konzept ist *eigentlich* eine *Abstraktion* davon. Ein Widget sollte ein Objekt sein, das Referenzen auf Elemente bzw. jQuery-Objekte besitzt, nicht umkehrt. So ist das auch in fast allen anderen Frameworks umgesetzt. Deshalb würde ich, selbst wenn ich jQuery UI einsetzen, nicht deren Widget-Konzept verwenden.

</lästerläster> :)

Grüße,
Mathias