Aufteilen des Codes in mehrere Komponenten |
(Embperl 1.2 oder neuer)
Wächst ein Programm, teilt man es in mehere Funktionen auf. Dies ist mit
Embperlseiten ebenfalls möglich. Folgendes Beispiel zeigt dies an Hand
von beschrifteten Texteingabefeldern: [$ sub textinput $]
[- ($label, $name) = @_ -]
[+ $label +]<input type=text name=[+ $name +]>
[$ endsub $] <form>
[- textinput ('Nachname', 'lname') -]<p>
[- textinput ('Vorname', 'fname') -]<p>
</form> Das sub Meta-Command kennzeichnet den Anfang der Funktion und die Parameter werden
im Array @_ übergeben. Man kann innerhalb der Funktion alles tun, was auch in
einer normalen Embperl Seite möglich ist. Aufgerufen wird die Funktion, wie
jede andere Perlfunktion auch, einfach durch Schreiben des
Namens und ggf. der Parameterliste.
Wenn man an einer ganzen Website arbeitet, kommt es meistens vor, daß es
Elemente gibt, die in jeder oder vielen Seiten immer wieder vorkommen.
Anstatt den Quellencode nun in jede Seite zu kopieren, ist es möglich
Embperl Module in die Seite einzufügen, so daß der Quellencode nur
einmal existieren muß. So ein Modul könnte z.B. ein Kopf, ein Fuß,
eine Navigationsleiste usw. sein. Es können dabei nicht nur Teile
einer Seite eingefügt, sondern auch, ähnlich einem
Unterprogramm, Argumente übergeben werden - z.B. um der Navigationsleiste
mitzuteilen, welches Element hervorzuheben ist. Beispiel für eine einfache Navigationsleiste [- @buttons = ('Index', 'Infos', 'Suchen') -]
<table><tr><td>
[$if $buttons[$col] eq $param[0]$] <bold> [$endif$]
<a href="[+ $buttons[$col] +].html"> [+ $buttons[$col] +] </a>
[$if $buttons[$col] eq $param[0]$] </bold> [$endif$]
</td></tr></table>
<hr> Wenn man nun auf der Info-Seite ist, kann die Navigationsleiste wie
folgt eingefügt werden: [- Execute ('navbar.html', 'Infos') -] Dies fügt die Navigationsleiste, welche in der Datei navbar.html gespeichert ist,
an entsprechender Stelle ein und übergibt ihr als Parameter die Zeichenkette 'Infos'.
Das Navigationsleistenmodul selbst benutzt eine dynamische Tabelle um die
Spalten anzuzeigen, welche den Text und einen entsprechenden Link enthalten. Die Texte
werden dabei dem Array @buttons entnommen. Wenn der Text gleich dem übergebenen Parameter ist,
wird er fett dargestellt.
Weiterhin gibt es noch eine ausführliche Form des Executeaufrufes, welche es erlaubt
sehr detailiert die Ausführung des Moduls zu kontrollieren.
Erstellen von Komponenten Libraries | top |
Statt eine extra Datei für jedes bischen HTML Code zu erstellen, welches in
eine andere Seite eingefügt werden soll, ist es möglich diesen in eine
HTML Datei zusammenzufassen. Um dies zuerreichen muß jedes einzelne
Codestück eine eigene Embperl Funktion sein. Mittels des import
Parameters der Execute Funktion können nun alle Embperl Funktionen in
den Namensraum der aktuellen Seite importiert werden und fortan
wie normale Perlfunktionen aufgerufen werden. Weiterhin ist es möglich die Embperl Funktionen (zusammen mit normalen Perl Code)
als ein Perl Modul (.pm Datei) zu installieren. Dadurch stehen sie systemweit zur
Verfügung und können wie jedes andere Perl Modul mittels use genutzt werden.
|