Schrift
[thread]12567[/thread]

wie trenne ich den Inhalt und das layout bei cgi/html (Seite 5)

Leser: 14


<< |< 1 2 3 4 5 >| >> 44 Einträge, 5 Seiten
topeg
 2008-11-14 00:02
#116229 #116229
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Damit niemand behaupten kann ich würde nur lästern.
Ein Paar Sachen aus meinem Fundus an Erfahrungen.

Ich liebe Templates, die sich als komplette valide Seite anzeigen lassen, auch wenn nur wenige Zeilen gebraucht werden. Man kann sich schon Anschauen wie die Ausgabe (bis zu einem gewissen Grad) aussehen wird.
Invalide HTMLschipselchen, die erst mit anderen Teilen zu validem HTML werden, sind mir zu wieder, da sie nicht selten zu einem Invaliden Ergebnis führen.

Ich spare nicht an Templates. zerstückelter HTMLCode, der je nach Bedingung neu und anders zusammengebaut wird ist immer problematisch. Jedes Template sollte in sich Valide und möglichst geschlossen sein, das verhindert Invaliditäten in der Ausgabe.

CSS nur in Ausnahmefällen generieren lassen. Besser ist es entweder auf verschiedene CSS-Dateien zu verweisen oder eigene Templates zu definieren.

Erst kurz vor der Ausgabe wird das eigentliche HTML in einem Rutsch erzeugt. Das macht es einfacher auf andere Ausgabeformate, oder Bibliotheken umzusteigen. Dazu kann es nötig sein intern eine eigene Formatierung zu erzeugen, die später umgewandelt wird.
Das hat auch den Vorteil, das Während des Umwandelns die Validität geprüft werden kann, mögliche Falschformatierungen können erkannt und korrigiert werden.

Alles was für die Ausgabe bestimmt ist und im Code steckt, muss von jemanden bearbeitet werden, der den Code kennt. Also so wenig wie möglich davon im Code haben. Selbst einfache Meldungen kann und sollte man in eine Externe Datei auslagern, oder wenigstens Zentral ablegen.
GwenDragon
 2008-11-14 11:36
#116233 #116233
User since
2005-01-17
14563 Artikel
Admin1
[Homepage]
user image
Ich verstehe nicht wieso jemand noch HTML so schreiben will, dass es nur im Quirksmodus läuft.
Quirks bedeutet nämlich nicht, dass Browser es richtig darstellen, sondern meist die diversen Bugs des Internet Explorer bzw. Mozillas nachahmen!

Wenn für bestimmte kaputte/alte Browser die Darstellung korrekt sein soll, dann solte eine serverseitige Browserweiche eingebaut werden, die nur bei den kaputten Browsern greift und denen angepasstes HTML/CSS anbietet.
Dann werden auch die modernen Browser später richtig anzeigen.

Aber was solls, Auctioneer will es eben nicht machen. Hoffentlich programmiert er wenigstens korrekt in Perl.

Ich habe das mit dem HTML auch nur erwähnt, weil wir hier im Forum den Leuten keine schlampige Arbeit beibringen, egal ob bei Perl, HTML, PHP o. ä.

---
Um nochmals auf das Ursprungsthema zurück zu kommen:

Esgibt mittlerweile so viele Templatesysteme für Perl wie HTML-template, HTML-Template-Compiled und sogar komplette Web-Frameworks wie Catalyst, Mojo, CGI-Application, HTML-Mason, die auch guten Code erzugen.

Es kommt immer darauf an wie ich programmieren will und was/wofür.

Ich finde HTML-Template-Compiled oder HTML-Template ganz gut für Anfänger.


scriptor+2008-10-01 17:25:31--
Du solltest von Anfang an jede Anfrage mit einem rewrite in einer .htaccess Datei auf Dein Skript umlenken, sieht etwa so aus:
Code: (dl )
1
2
3
RewriteCond 	%{SCRIPT_FILENAME}			!/resources/
RewriteCond %{SCRIPT_FILENAME} !start.pl$
RewriteRule ^(.*)$ /cgi-bin/start.pl/$1?&%{QUERY_STRING} [L]

Dein Perl untersucht nun den Aufruf auf Gültigkeit (Pfad, (User, Session)). Ich nenn das Controller. Am Ende ist klar, welche Seite benutzt wird und damit werden in der Seite benötigte Inhalte geholt, formatiert (in Templates) und an passender Stelle ausgegeben. Dafür gibt es viele Lösungsansätze.

Allerdings braucht es dazu kein Rewrite bei Apache!
Apache beitet nämlich auch die Möglichkeit an Handler zu installieren.
Bei bestimmten Dateiendungen schlägt dann der Handler zu und "interpretiert" path_info, lädt das Template füllte es mit Daten und gibt es aus.
So mache ich das oft.

Als Apache-Konfiguration sieht das so aus.
Code: (dl )
1
2
3
4
5
AddHandler meintemplate-cgi .html
Action meintemplate-cgi /cgi-bin/start.pl
<FilesMatch "html?$">
SetHandler meintemplate-cgi
</FilesMatch>
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

Gast Gast
 2008-11-14 02:49
#116234 #116234
@topeg
Deine Bemühungen in allen Ehren ...
aber der Auctioneer scheint absolut beratungsresistent zu sein - anders ist sein erneuter Beitrag kaum zu interpretieren.

@Auctioneer
zeig doch mal ein paar Codebeispiele die aus Deinem Erfahrungsschatz erwachsen sind.
Struppi
 2008-11-14 10:14
#116236 #116236
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
Auctioneer+2008-11-13 18:37:57--
>>Wenn man will, dass Browser (jeglicher Markt) eine Seite einfach so lesen und darstellen wie sie geschrieben ist, soll man am besten kein "<!DOCTYPE HTML" verwenden. Der Nachteil davon ist, dass der Seitenaufbau ggfls. etwas langsamer vor sich geht, aber die Seite letztendlich dafür mir allen marktüblichen Browsern ungefähr gleich dargestelt wird.<<

Ich nenne das: simple & clean x-browser readable HTML

dieser Trick ist Unsinn! Der von dir gennante DOCTYPE ist HTML5 und sollte noch nicht verwendet werden, da gebe ich dir Recht, aber eine DOCTYPE der die Browser in den Quirksmodus versetzt ist so ähnlich - um beim Autobahnbeispiel zu bleiben - wie, wenn du ein Schild aufstellst "Autobahn gesperrt, benutzt den Feldweg!", fast alle Autos (und andere Fahrzeuge) können ihn benutzen, aber mit die meisten erheblichen Einschränkungen.

Im gegensatz zum Standardmode, der (von Bugs abgesehen) von allen modernen Browsern ähnlich dargestellt wird. Wenn du allerdings kein, oder wenig, CSS verwendest, dann spielt das tatsächlich kaum eine Rolle. Damit zeigst du, dass die Seite für Oldtimer gemacht wurde. Das ist doch auch etwas, es gibt viele Liebhaber alter Dinge ;-)
<< |< 1 2 3 4 5 >| >> 44 Einträge, 5 Seiten



View all threads created 2008-10-01 10:05.