-
data publikacji: 16.05.2010
pHAML – inne spojrzenie na rozlazłego HTML’a
kategoria: Skrypty server-side, XHTML/CSS autor: palmiak
Ostatnio chwaliłem się fajną zabawką do CSS, a mianowicie CSS Scaffold. Dziś zaś przyszła pora na zrobienie czegoś z HTML'em. HAML jest głównie znany osobom, które używają RoRa. Ja taką osobą nie jestem, więc przez długi czas omijałem temat szerokim łukiem.
Jednak któregoś dnia szlag mnie trafił i postanowiłem coś w końcu zrobić, bo efekt mieszania php i HTML'a na dłuższą metę jest tragiczny. Człowiek się gubi gdzie się pętle zaczynają, gdzie kończą i ogólnie jest bajzel. Okazało się, że ktoś był na tyle miły, żeby przeportować HAMLa na php i tak oto powstał pHAML. W porównaniu z oryginałem są pewne różnice, jednak to co najważniejsze zostało zachowane.
Pierwsze starcie
Dzięki pHAML kod ulega dość imponującemu skróceniu. Dla przykładu zobaczmy różnicę między w 'Hello world':
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>hello</title>
</head>
<body>
<p>Hello world</p>
</body>
</html>
!!! Strict
%html
%head
%title hello
%body
%p hello world
Przeanalizujmy linijka po linijce.
!!! Strictto nic innego jak doctype (koniec kopiowania tego cholerstwa za każdym razem)
%html %head etc- po prostu tagi, tyle że zamiast ich zamykać używamy wcięć.Na pierwszy rzut wygląda to dziwnie, ale chwila wprawy i zaczyna być fajnie.
Parametry
Przekazywanie parametrów odbywać się może na kilka sposobów. Najbardziej uniwersalnym jest:
%p{class="jaka_klasa jakas_inna_klasa" id="unikalny_id" style="color:red"}
Jak się zapewne domyślacie w rezultacie otrzymamy:
<p class="jaka_klasa jakas_inna_klasa" id="unikalny_id" style="color:red"></p>
Klasy i idy możemy jednak przekazywać w troszkę krótszej formie:
%p.jaka_klasa.jakas_inna_klasa#unikalny_id{style="color:red"}
Po prostu po kropkach wymieniamy klasy a po # id.
Pewnym wyjątkiem jest div, gdzie nie trzeba pisać nazwy taga:
.jaka_klasa.jakas_inna_klasa#unikalny_id{style="color:red"}
jest równoznaczne z:
%div.jaka_klasa.jakas_inna_klasa#unikalny_id{style="color:red"}
Kilka przykładów na potwierdzenie, że HAML fajny jest
Do myków, które mi się strasznie podobają należą na pewno listy:
%ul
%li raz
%li dwa
%li trzy
%li
%ul
%li trzy jeden
W końcu wygląda to czytelnie, szczególnie zagnieżdżenia.
Bardzo przyjemnie wyglądają też tabele:
%table
%tr
%th id
%th imię
%th nazwisko
%tr
%td 1
%td maciek
%td kowalski
%tr
%td 2
%td andrzej
%td nowak
Znaki specjalne
\- wyświetla wiersz dosłownie taki jaki jest.
<<<oraz>>>- wyświetla zawartość dokładnie taką jaką jest znajdującą się między tymi znakami
/- zamienia wiersz na typowy htmlowy komentarz
//- komentarz, ale niewidzoczny w htmluA jak tu php wrzucić?
Najprościej mówiąc - za pomocą myślnika:
to nic innego jak:
<?php for($x=1; $<=1 ;$x++ { ?>
<p>hello</p>
<?php } ?>
Jednak różnica jeśli chodzi o czytelność dość spora.
Wywoływanie
Pokazałem już jak pisanie w HAMLu wygląda, teraz czas to jakoś uruchomić. Najpierw pobieramy ze strony twórcy odpowiednie archiwum. Następny krok to rozpakowanie zipa.
Kiedy już wszystko mamy przygotowane tworzymy sobie plik np test.php a w nim piszemy:
<?php include('class.pHAML.php');
$template ='!!! Strict
%html
%head
%title hello
%body
- for($i=0;$i<=10;$i++){
%p
- echo $i."<br/>";
- }
';
$pHAML = new HAMLatin();
$content = $pHAML->render($template);
$content = $pHAML->renderPHP($content);
echo $content;
Całą treść przypisujemy sobie do jakiejś zmiennej a potem przekazujemy jako parametry dla render i renderPHP.
Jeżeli uzywamy tylko htmla, nie jest potrzebna linijka
$content = $pHAML->renderPHP($content);.Zachęcam do zabawy, bo wywoływanie tego można zrobić na wiele wygodniejszych sposobów.
Drobne bugi
Wersja dostępna na phaml.sourceforge.net ma w sumie dwie wady. Jedna to taka, że wszystkie tagi traktuje jako podwójne, a druga, że stosuje notację htmlową, a nie xhtmlową.
Na szybko poprawiłem te dwie rzeczy i tagi pojedyncze zamyka poprawnie, a kwestię html/xhtml rozwiązałem poprzez dopisanie zmiennej $is_xhtml. Uprzedzam, że były to poprawki na szybko lecz nie zauważyłem żeby coś nie działało/działało źle. Plik do pobrania stąd.
Podsumowanie
Muszą przyznać, że (p)HAML jest fajnym wynalazkiem. Strasznie upraszcza widok HTMLa. Szkoda jednak, że pod PHP nie ukazała się żadna porządna i ciągle rozwijana implementacja (ta prezentowana tutaj nie sprawia już wrażenie rozwijanej) Pod tym względem muszę przyznać, że jest to coś czego programistom od Ruby'ego można pozazdrościć.
A Wy jakie znacie i polecacie substytuty zwykłego (x)HTML'a?
-
12 Responses to “pHAML – inne spojrzenie na rozlazłego HTML’a”
Leave a Reply
Komentarze
Kategorie
Top 10
bal intermobil: Jak stworzyć stronę za pomocą xhtml oraz css
alan27pbll: Query_posts, czyli jak ujarzmić loopa część 1.
alan27pbll: Query_posts, czyli jak ujarzmić loopa część 1.
Michał: Inspirujące strony www: wrzesień 2010
czi: Gravatar, czyli jak mieć globalnego avatara
learn italian online: Query_posts, czyli jak ujarzmić loopa część 1.
hotelpalermo: Jak poprawnie osadzić Flasha w kodzie (X)HTML strony?
Michał: jQuery Cycle
Windscreen: Inspirujące strony www: wrzesień 2010
EMAAR MGF GURGAON: Query_posts, czyli jak ujarzmić loopa część 1.
- CMSy Artykuły dotyczące różnego rodzaju systemów zarządzania treścią CMS.
- Flash Podstawowe informacje pomocne przy tworzeniu animacji w Adobe Flash.
- Fotografia Samouczki dotyczące nie tylko robienia zdjęć ale też ich cyfrowej obróbki.
- Grafika Ogólnie pojęta grafika komputerowa, od inspiracji, po tworzenie layoutów oraz mniejszych form graficznych.
- Inne tutoriale wordpressowe Wszystkie inne zagadnienia dotyczące WordPressa.
- Inspiracje Inspirujące materiały graficzne z dziedziny projektowania stron www, projektów DTP, digital painting, itp.
- Obróbka zdjęć Techniki retuszu fotografii cyfrowych.
- Rysunek Tworzenie rysowanych ilustracji w Adobe Photoshop.
- Skóry do Wordpressa Darmowe oraz płatne – najlepsze skóry do WordPressa.
- Skrypty client-side
- Skrypty server-side
- Tutoriale
- Webdesign Tutoriale z zakresu projektowania stron www i grafiki użytkowej na rzecz internetu.
- Wieczór z Open Source
- Wordpress Ulubieniec naszej publiczności CMS WordPress: nowości, tricki, wtyczki, skóry i wszystko to co może przydać się przy korzystaniu z tego systemu.
- Wtyczki do Wordpressa Recenzje oraz instrukcje najbardziej popularnych i najbardziej niezbędnych pluginów do WordPressa.
- XHTML/CSS Ciekawostki z dziedziny kodowania stron www: XHTML, CSS, jQuery.
Najnowsze newsy
Wieczór z Open Source 2010
Jak co roku WSINF organizuje konferencję Wieczór z Open Source.
Chciałbym zaprosić was na tegoroczna konferencję Wieczór z Open Source 2010! Czytaj dalej
Grafart.org i WACOM zapraszają na konkursy!
Witam!
Myślę, że czas najwyższy nadmienić, że za niedługi czas zostanie zorganizowany pierwszy z trzech konkursów, w których główną nagrodą będą tablety firmy WACOM!
Za miejsca drugie oraz trzecie nagrodami będą kubki i koszulki firmy WACOM oraz magazyny graficzne PSD PHOTOSHOP oraz COMPUTERARTS.
Czytaj dalej
Zapraszamy na forum graficzne Graffika.pl
Każda osoba interesująca się grafiką komputerową ma czasami ochotę porozmawiać o swoich pracach, posłuchać rad, krytyki i pochwał innych osób. Idealnym miejscem na realizowanie takich potrzeb jest forum graficzne Graffika.pl.
Czytaj dalej
Polecane strony
- No bookmarks avaliable.























[...] This post was mentioned on Twitter by vivee.info. vivee.info said: pHAML – inne spojrzenie na rozlazłego HTML'a http://bit.ly/d3jItN [...]
Ciekawa idea, tylko co będzie np. z cache'owaniem wyników takiego "przetwarzania? I jak jest z wydajnością w stosunku do "natywnego" HTMLa?
Cache'owania w samej klasie nie ma. Trzeba dopisać lub użyć gotowca. W przypadku gdy dopiszemy cache'owanie problem wydajności możemy pominąć, w przeciwnym dostaniemy troszkę w kość (konkretnych wartości przyznam, że nie znam).
osobiście jednak pozostanę przy systemach szablonów. Tworzenie kolejnego pseudo-języka tylko utrudnia i wydłuża czas realizacji projektu. Tym bardziej, że w klasie tak naprawdę nie ma żadnego wbudowanego systemu cache'owania.
Już widzę zadowolenie moich pracowników na informację o stosowaniu pHAML'a w projektach…
Dlatego tego typu rzeczy można wprowadzać gdy pisze się samemu, albo po uzgodnieniach z zaspołem. I po dopsianiu cache'owania.
Fajne…
I na pewno nie jest to kolejny PSEUDOjęzyk, bo jesli znasz HTMLa znasz pHAMLa, zamiast
piszesz %p i już
Szkoda że nie jest juz rozwijane
"Zamiast < p></ p> piszesz %p i już
"
Tak mialo byc
@Michał – gdyby to byłą warstwa pomocnicza, coś na kształt "renderowania" HTMLa na żywo przy pomocy JS, to pewnie przydałoby się do tworzenia np. helperów, ale jako rozwiązanie całościowe – z czym się zgadzam – odpada.
ja polecam zen-coding po prostu. przerost formy nad treścią w tym momencie, zgadzam się z przedmówcami.
Testowy wpis…
Spodobał mi się Twój artykuł, umieściłem Trackbacka na swoim blogu do tego wpisu….
Ja przez jakiś czas z kolei zachwycałem się Xt, gdzie do zagadnienia podchodzi od zupełnie innej strony – operuje się oddzielnie na czystym (x)HTMLu, bez żadnego pseudojęzyka, a tylko z klasami i id, oraz na php, gdzie przez te klasy i id ma się do htmla dostęp. Jako że całość opiera się na parsowaniu xmla, jest to naprawdę szybkie, do tego stopnia że eksperymentalna wersja z cache, przygotowana przez autora… nie przyniosła żadnej zmiany wydajności.
Szkoda, że projekt nie jest już rozwijany, i to chyba od dobrych paru latek…
I’m impesresd! You’ve managed the almost impossible.