Prototype oder jQuery
Ich las grad wieder auf Ajaxian darüber und auch ich selbst steh dem oft gespalten gegenüber. Ich leuge nicht ein starker Vertreter von Prototpye.js zu sein, und wahrscheinlich werden folgende Gedanken davon geprägt sein, aber ich finde ich muss mal schreiben was ich an Prototype so wirklich mag und was ich bei jQuery vermisse.
Das Frameworks einen neuen Schreibstil mit sich bringen ist bekannt. Von den ganzen Codeschnipseln und endlosen Experimenten kann ich sagen dass Prototype einfach eleganter ist, bzw. es liest sich einfach schöner.
Ich würde zum Beispiel niemals auf die Idee kommen einen Ajax-Chat oder ein komplexes Interface mit jQuery umzusetzen, denn dort würde man (einfach um den Überblick nicht zu verlieren) Klassen und Objekte erstellen um die Anwendung in handliche Einheiten zu zerlegen. Dazu ist jQuery meiner Meinung nach einfach nicht Gedacht. Prototype wartet hierzu mit einem ganzen Arsenal von Utilities auf.
Bei jQuery gibt es viele Nebenprodukte wie $.each, die vielleicht wie eine Alternative zu Prototype erscheinen, aber auf mich eher wirken als wäre den Entwicklern später eingefallen das sie noch was vergessen haben. Aber deshalb sind es eben zwei paar Schuhe.
In jQuery dreht sich alles um Elemente (eher Sammlungen von Elementen). Es wird immer davon ausgegangen dass man mit HTML arbeitet, was meiner Meinung nach ein riesiger Nachteil von jQuery ist. Zur DOM-Manipulation bestens geeeignet (und man kann dort wirklich mächtige Ein-Zeiler schreiben), aber wenn man mit fremden Daten arbeitet kommt man schnell ins Schleudern. Dann ist plötzlich jQuery nicht mehr so toll.
Prototype hat seine stärken bei der Verarbeiten von Daten. Arrays, Hashes und Strings. Das liegt daran, weil Prototype eine ganz andere Route verfolgt. Es erweitert die vorhandnen Javascript Objekte und würzt es mit einem einfachen Modell zum Erstellen von Klassen. Es hilft einem also nicht nur schnell an irgendwelche Elemente zu kommen, sonder greift einem auch in anderen Bereichen unter die Arme.
Demnach kann man jQuery und Prototype auch gar nicht wirklich gegenüber stellen.
Bei der Frage nach Prototype oder jQuery antworte ich eigentlich deshalb meist: Wollen wir ein wenig HTML manipulieren, oder wollen wir eine Ajax-Anwendung schreiben? Letzteres wäre dann Prototype.
Man muss nur mal einen Blick in Dokumentation beider schauen. Bei Prototype gibt es für alles etwas. Bei jQuery stellt der DOM Abschrnitt alles andere in den Schatten.
Prototype kann einfach mehr und lässt einen nicht irgendwann im Dunkeln, weshalb Prototype mein Favorit für jede Anforderung ist.
Prototype 1.6 RC – JSON wie es sein sollte
Vor einiger Zeit habe ich mal mein eigenes Ajax.JSONRequest() geschrieben, weil ich kein Fan davon bin 100 mal das gleiche zu schreiben. Damit das alles klappt habe ich mich nach dem richtigen Content-Type umgesehen und den Prozess darauf aufgebaut. Der korrekte Typ ist application/json und falls gesetzt, evaluieren den responseText automatisch.
Die neue Prototype 1.6 Version nutzt ein ähnliches Prinzip und liefert uns nun ein transport.responseJSON. Vorbei sind die Zeiten von transport.responseText.evalJSON(). Ich frage mich warum nicht gleich so, wo doch text/xml schon seit längerem dafür gesorgt hat das wir responseXML haben. Naja.. super Schritt vorwärts.
-
getResponseJSON: function() {
-
var options = this.request.options;
-
try {
-
if (options.evalJSON == 'force' || (options.evalJSON &&
-
(this.getHeader('Content-type') || '').include('application/json')))
-
return this.transport.responseText.evalJSON(options.sanitizeJSON);
-
return null;
-
} catch (e) {
-
this.request.dispatchException(e);
-
}
-
}
Es gibt auch nocht ein paar neue Optionen für Ajax.Request.
- sanitizeJSON (bool) - Prüft automatisch auf böse Inhalte und blockiert die Ausführung falls etwas gefunden wird. Ist standardmässig "true", aber ob das so gut ist, weiss ich nicht. In der ersten Revision gab es Probleme je nach Anwendungsgebiet.
- evalJSON (bool) - Damit kann man das neue Verhalten der automatischen evaluierung beeinflussen. Standard ist "true" und gut.
- evalJS (bool) - Gleiches Prinzip, anderer Inhalt. Wenn der Server text/javascript liefert wird der responseText direkt ausgeführt.
Angeblich soll diese Version 1.6.0 RC_0 recht stabil sein, aber ich warte lieber und werde nach und nach die Api Doku aktualisieren.
CenterNetworks Startup Tips eBook
CenterNetworks hat kürzlich ein eBook mit vielen nützlichen Tips rund um das Thema "Startup" veröffentlicht. Das PDF umfasst 46 Seiten wo rund 40 Autoren Ihre Erfahrungen und Tips verraten. Kostenlos natürlich, samt Inhaltsverzeichnis und im druckbaren Format. - Download
Desktopography: Designer Wallpaper
Ich habe soeben eine wunderschöne Wallpaper Sammlung gefunden. Desktopography beschäftigt sich mit dem Thema "Outdoor". Alles was "draussen" ist, ist erlaubt. Die Desktophintergründe dürfen natürlich runtergeladen werden. Viel Spass beim stöbern!
CakePHP: HelperComponent
Als ich heute so durch meine RSS Subscriptions wanderte fand ich einen Artikel bei CakeBaker wie man in einem Controller einen Helper verwenden kann. Ich stimme natürlich zu, dass es nicht immer Sinn macht und eigentlich vermieden werden sollte, aber es gibt dennoch immer Bereiche wo es sinnvoll ist.
Ich finde den TimeHelper zum Beispiel auch sehr nützlich in einer Action bzw. in einem Controller. Grad wenn man mit externen Daten arbeitet und die das Unix Format verwenden, oder zeitbasierte Queries bilden will.
Die HelperComponent nimmt einfach das von mir festgelegte Property "actionHelpers" und lädt alle dort definierten Helper in den Controller unter selben Namen. Man kann also auf die Helper so zugreifen wie auf Components.
Das nur als Beispiel. Der Rest bleibt euch überlassen ;)
app/controller/compontents/helper.php
-
class HelperComponent extends Object {
-
var $controller;
-
-
function startup(&$controller)
-
{
-
$this->controller = $controller;
-
$this->pushHelpers();
-
}
-
}
-
-
function pushHelpers()
-
{
-
foreach($this->controller->actionHelpers as $helper) {
-
loadHelper($_helper);
-
$_helperClassName = $helper.'Helper';
-
$this->controller->{$helper} = new $_helperClassName();
-
}
-
}
-
}
Viel Spass damit.
Zend PHP Zertifizierung gebucht – Grundsätzlich sinnvoll?
Ich habe mich nun doch endlich mal entschlossen die PHP-Zertifizierung zu buchen. Man lernt ja nie aus, wie man so schön sagt. Es gibt jedoch diverse Meinungen zur Zertifizierung als solches.
Sie bescheinigt eigentlich ja nur ein gewisses Maß an Kenntnisse und nicht, wie kreativ oder geeignet jemand für ein Projekt oder Aufgabe ist. Auf der andere Seite zeigt es das man bemüht ist Qualität abzuliefern und sein Wissen zu erweitern. Obwohl "Wissen erweitern" nicht korrekt ist, denn hervorzuheben ist hier wohl das Wort "Zertifizierung" (Man bekommt nur einen "Stempel" für das, was man schon längst wusste).
Wie steht ihr zu dem Thema Zertifizierung? Habt ihr vielleicht schon die Zertifizierung abgeschlossen? War nach Abschluss irgendetwas anders in Bezug auf Bewerbungsgespräche, Kundenresonanz, etc..?
Würde mich freuen ein paar Kommentare zu dem Thema zu lesen.
