Thread Progressive Enhancement (7 answers)
Opened by rosti at 2018-11-05 16:40

rosti
 2018-11-05 16:40
#189108 #189108
User since
2011-03-19
3194 Artikel
BenutzerIn
[Homepage]
user image
Lange Winterabende. Habe heute endlich mal eine Sache in trockene Tücher gepackt die längst fällig war. Die Idee die dahintersteckt:

Webanwendungen sollen, sofern JavaScript verfügbar ist, mit AJAX laufen. Ansonsten als native CGI. Wie üblich bringe ich da erst das native CGI zum laufen. Sämtliche Daten die in das Responsetemplate gepflanzt werden sollen, liegen bei mir in einem sog. {STASH} (Datenversteck).

Wenn also ein bestimmter Parameter kommt, wird der {STASH} mit Daten betankt. Ein XHR-Request nun, zeigt sich per Request-Header x-hr kenntlich, was serverseitig geprüft wird:

Code (perl): (dl )
1
2
3
 if( $ENV{HTTP_X_HR} ){
    return $self->{CONTENT} = $self->encode_stash();
 }


D.h., für die AJAX Response wird nur der STASH serialisiert. Und damit wird ein progressive Enhancement zu einem Kinderspiel.

Macht Ihr das auch so?

PS: In JS heißt die Funktion decode_stash(). Sie kann JSON kapseln oder einen bliebig anderen Serializer. Hier ist ein Beispiel: http://rolfrost.de/cpoint2bints.html

Die Kapselung hat den Vorteil, daß Code wiederverwendbar wird, so kann die serverseitige Methode von jeder beliebigen Instanz aufgerufen werden die in meinem FW von der main-Class erbt (Factory). Sie hat also immer denselben Namen, sowohl server- als auch clientseitig.




.
Last edited: 2018-11-06 06:38:23 +0100 (CET)

View full thread Progressive Enhancement