Auctioneer+2008-10-07 01:58:23--Der Vorteil von HTML Templates liegt vielleicht darin, dass diese etwas einfacher mit HTML Editoren nachbearbeitet werden können. Allerdings kann es passieren, dass, je nach Template System, interne "Seiten-Schnittstellen-Kommando-Wörter" nach einer solchen Bearbeitung plötzlich weg sind, und dann funzt die Template nicht mehr.
Zum Beispiel??
QuoteHTML Templates machen vielleicht Sinn, wenn grosse HTML Inhalte eingelesen werden müssen, denn der Script selber nimmt sonst riesige Ausmasse an, was die Uebersichtlichkeit beim Editieren erschweren kann. Allerdings kann man den Script in einzelne Teile zerlegen, um dieses Problem zu lösen.
Inhalte und Logik sollten immer getrennt sein. Das erleichtert die Wartung des Skripts und des Layouts enorm.
Bei Skripten, die wirklich nur drei Zeilen HTML ausgeben, nehme ich dann die Funktionen von CGI.pm (z.B.
print $cgi->b('fetter Text' );). Aber das ist die absolute Ausnahme. In 99% der Fälle nehme ich ein Template System.
QuoteDa normalerweise in einem Script sehr viele sehr kurze HTML Sequenzen vorhanden sind, die vielleicht nur eine oder zwei HTML Zeilen beinhalten, macht es fast keinen Sinn, derartige Dinge auszulagern, denn sonst verliert man ohne HTML Teile letztlich den Ueberblick im Script selber. Ich habe mir soeben ein derartiges "Werk" zur Brust genommen und gestaunt, wie schlecht man es machen kann, nur weil man um jeden Preis "templaten" wollte.
Häufig ist so etwas ein "Fehler" im Programmdesign. Ich finde es eher schlecht, wenn an 1000 Stellen jeweils eins oder zwei Zeilen HTML ausgegeben werden. Wenn es dann mal heißt "An der Stelle soll statt der Checkbox ein Radiobutton", dann sucht man relativ lange im Skript, während man in einem Template dann relativ schnell die Dinge ändern kann.
QuoteDie Geschwindigkeit von HTML Teilen innerhalb Scripts kann massiv erhöht werden, wenn der Server nicht jeden Buchstaben eines HTML Teils als Perl Script Teil abrufen (und auf scripttechnische Korrektheit prüfen) muss, sondern den HTML Teil nur als reinen Text (ohne Fehlerkontrolle) ablesen kann. Das erreicht man, wenn man HTML Sequenzen anstatt:
Ich nehme an, Du meinst die Interpolation von Variablen?!? Da gibt es keinen Unterschied zwischen "" und qq~~. Wenn Du Interpolation vermeiden willst, dann solltest Du '' bzw. q~~ verwenden.
QuoteDie viel eingesetzte, erfahrungsgemäss jedoch schlechteste Variante ist:
print =<<"EOF"
...
...
EOF
weil hier die Perl Backslashes \ auch innerhalb HTML beibehalten werden müssen, sonst gibt es haufenweise Errors
Häh??
Quote, ausgenommen, man verzichtet auf Gänsezeichen, was aber eigentlich ein Murks ist. Ausserdem kann man ohne Gänsezeichen keine mehrwörtigen (z.B.) Bildinformationen -alt=Muster text- Informationen eintragen weil so nur das erste Wort nach -alt=Muster- ausgelesen wird, abgesehen vom möglichen Folge-Error, der das zweite (offene) Wort im weiteren Programmablauf hinterlässt.
print =<<"EOF";
<img src=\"musterbild.jpg\" alt=\"Muster text\" border=\"0\">
EOF
Die Backslashes sind unnötig:
C:\>perl
print <<"EOF";
Die ist ein "Test"
EOF
^D
Die ist ein "Test"
Du solltest aber das "=" vor dem "<<" weglassen.
Quoteund weil der Abstand zwischen dem Start/Schluss - EOF manchmal eine Leerlinie betragen muss, damit es vom Server "verstanden" wird:
print =<<"EOF";
<img src=\"musterbild.jpg\" alt=\"Muster text\" border=\"0\">
EOF
Bitte Beispiel. Das wäre ein Bug in Perl und dieses Verhalten ist mir noch nie untergekommen (was nicht heißt, dass es den Bug nicht geben kann).