PHP Blogger

Startseite Schreib mir ne Mail! RSS Abo Webnews

Abstraktes HTML mit HAML

Haml LogoNein. Es ist kein Hase, es ist ein Haml. Gerade über dieses erstaunliche Projekt gestolpert, muss ich es auch gleich mal bloggen. Was ist Haml? Und was macht es?

Haml ist eine Abstraktions-Auszeichnungssprache für Webfrontends, original entworfen für Ruby. Es erinnert mich an einen Mix aus CSS, Yaml und TextilePHP… Mit anderen Worten: Man beschreibt anhand strukturierter Ausdrücke den Aufbau einer HTML-Datei:

%h2 Überschrift
  %ul
    %li Eintrag 1
    %li Eintrag 2

wird zu:

<h2>Überschrift</h2>
<ul>
  <li>Eintrag 1</li>
  <li>Eintrag 2</li>
</ul>

Im Haml-Labor kann man ein bisschen mit der Syntax rumspielen. Aber Haml kann noch ein bisschen mehr. Auch logische Verzweigungen und Schleifen sind möglich.

So kann man das:

<html><head>
<?php if ($title) { ?>
<title><?php echo $title; ?></title>
<?php } else { ?>
<title><?php echo $pagename; ?></title>
<?php } ?>
</head>
<body>
<div id=”header”>
<h1><?php echo $pagename; ?></h1>
<?php if ($slogan) { ?>
<span><?php echo $slogan; ?></span>
<?php } ?>
</div>

durch folgenden Haml-Code ersetzen:

%html%head
- if ( $title)
%title= $title
- else
%title= $pagename
%body
#header
%h1 Example page
- if ($slogan)
%span= $slogan

Etwas übersichtlicher wirkt es ja schon, dieses Haml. Aber würde nicht auch der PHP Fetzen besser aussehen, wenn man ihn ein wenig mit Einrückungen und Blanks verziert?

Und wie kommen die echten Werte jetzt in die Haml-Variablen? Hier hilft das PHP Projekt “phpHaml” von Amadeusz Jasak weiter. Er stellt eine gut dokumentierte Klasse zur Verfügung, mit deren Hilfe man Haml-Templates parsen und in HTML umwandeln kann.

Trotzdem bin ich von diesem Logik-Gerammel in Templates nicht sonderlich begeistert. Immerhin bietet Haml eine Alternative zum PHP-Tag Geraffel in Templates, ob es übersichtlicher ist? Ich behaupte nein, aber es möge auch andere Stimmen geben.

Wer auf Haml aufsetzt sollte daran denken, dass es wie jede andere Templatesprache erstmal geparst werden muss. Und wenn der Parser selbst von einem Parser geparst wird, dann verschenkt man eben wertvolle Millisekunden.

Geschmacksache. Wie so oft.

Teile und genieße Diese Icons verzweigen auf soziale Netzwerke bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • MisterWong
  • del.icio.us
  • Technorati
  • Digg
  • Slashdot
  • YahooMyWeb
  • Furl
  • Ma.gnolia
  • Spurl
  • Netscape
  • StumbleUpon
  • MyShare
  • blogmarks

Philip meint dazu:

26. Oktober 2007 um 14:31

Ich hoffe mal, dass der Editor hier nicht die Leerzeichen zerfetzt, aber ich finde unten genanntes auch relativ lesbar. Gut mag ein Unterschied sein, wenn man damit jeden Tag zu tun hat. Aber ich denke mal, dass jemand der sich in HAML einliest sich auch gleich in PHP einlesen kann und damit am Ende wahrscheinlich besser fährt. Zumal sich mir schon mit YAML so einige Schwachstellen im wirklich produktiven Einsatz aufgetan haben.

[…]

Philip meint dazu:

26. Oktober 2007 um 14:35

Hmm super der Code schluckt alle HTML-Tags einfach weg, anstatt sie zu encoden…. super. Also hier nochmal und bitte alle ‘#’ durch ” (im Kopfe) ersetzen.

#html#
#head#
#?php if ($title) :?#
#title##?=$title;?##/title#
#?php else : ?#
#title##?=$pagename;?##/title#
#?php endif; ?#
#/head#
#body#
#div id=”header”#
#h1##?=$pagename;?##/h1#
#?php if ($slogan) : ?#
#span##?=$slogan;?##/span#
#?php endif; ?#
#/div#
[…]

loci meint dazu:

29. Oktober 2007 um 10:24

wie waers denn einfach mit datenhaltung in xml und einer wandlung via xslt?
dazu gibts saubere spezifikationen und jede moderne programmiersprache kann die transformation durchfuehren.
immer wieder solche proprietaeren ansaetze welche nur dinge abbilden, die es schon lange gibt.

insel meint dazu:

31. Oktober 2007 um 17:28

sieht auf den ersten blick etwas komisch aus, zumindest fallen mir auf anhieb keine einsatzmöglichkeiten ein, wo man mit anderen technologien nicht genauso gut vorankommt (auch wenn zB xslt auch nicht gerade das gelbe vom ei ist und hoffentlich bald durch etwas zeitgemäßes ersetzt wird),

andererseits scheint haml ja eigentlich für ruby-on-rails gedacht zu sein und ERB, wo ich mir schon eher einen vorteil dadurch vorstellen kann…

bei php würde es fürst erste reichen die dämlichen $-zeichen wegzubekommen….würde viele coder-finger freuen….is natürlich nur meine meinung ;)

loci meint dazu:

5. November 2007 um 08:35

@insel: was findest du an xslt denn nicht zeitgemaess?

fd meint dazu:

23. November 2007 um 15:28

Wenn ihr den Sinn von haml nicht versteht, dann schaut euch doch mal staticmatic an!

butzi meint dazu:

22. April 2008 um 16:18

Die Templatesprachen sind ja eher gedacht, dass ein Programmierer, am umgesetzten Design mit seinen normalen Tools weiter Änderungen vornehmen und die Pixel rumschubsen kann.

Mit HAML geht der Gedanke irgendwie verloren und man kann es gleich sauber einprogrammieren. Suchen und Ersetzen kann man auch mit PHP (str_replace) das sollte immernoch effizienter sein.

timi meint dazu:

22. April 2008 um 16:49

Na klar, hat vor und Nachteile. Man sollte aber nie vergessen, dass PHP die Templatesprache selbst ist.

RSS für Kommentare zu diesem Artikel · TrackBack URI

Schreib Deine Meinung