Avatar billede groyk Novice
23. juni 2009 - 11:47 Der er 9 kommentarer og
1 løsning

Adskille design og "programering"

Har længe ledt med lys og lygte efter hvordan jeg nemmest får adskilt min programdel og mit layout når jeg laver hjemmesider. Jeg bruger primært php serverside, hvilket jeg absolut ikke har tænkt mig at ændre på.

Har kigget på Smarty og andre lign. systemer.

Jeg synes dog ikke så meget om ide'en bag systemer som smarty, da de vil øge datatrafikken markant!

Min ide er at kode ALLE siderne som ren HTML og derefter bruge JS/AJAX til at indsætte, opdatere data. Udmidelbart lydder det jo skide smart i mine øre, men hvordan fungere det i praxis? Jeg har lavet nogle tabeller og lign der bruger AJAX, men har ikke prøvet at lave et helt site med denne løsning.

Er der nogle der kan linke mig til nogle vejledninger, løsninger eller lign. Og er der nogle der har erfaring inden for dette område.
Avatar billede j4k0b Nybegynder
23. juni 2009 - 12:40 #1
Ja det er sikkert skide smart, men der er flere ting du skal tage højde for...

- Browserens performance; det er som sådan ikke et stort problem længere, nu hvor de fleste browsers er blevet gode til Javascript

- Søgemaskineoptimering; søgemaskinerne forstår ikke din Ajax baserede hjemmeside. Overvej det grundigt, søgemaskiner er en vigtig trafikkilde.


Systemer som smarty (og TAL som jeg vil anbefale) er et rigtig godt udgangspunkt for at adskille program og præsentation. Sådan fungerer stort set alle frameworks jeg har arbejdet med, så det bliver nok heller ikke det helt store problem på din hjemmeside...

http://phptal.org/
Avatar billede groyk Novice
23. juni 2009 - 14:18 #2
Takker for hurtig respons.

Man skal naturligvis ikke skyde Smarty, PhpTAL mf. ned før man har sat sig ind i det. Tror måske jeg giver det en chance.

Såfremt jeg vælger PhpTAL, hvordan spiller det med ex. AJAX når der udskrives tabeller og lign?

Jeg har på nogle af mine sider nogle rimeligt avancerede AJAX loads i forbindelse med eksempel oprettelse af indkøbs ordre, fakturaer mv.

Er det noget som rimeligt smertefrit kan flyttes til PhpTAL?

Eller skal disse sider kodes uden om template systemet?

Kan godt lide PhpTAL's licens LGPL
Avatar billede j4k0b Nybegynder
23. juni 2009 - 15:06 #3
TAL og Smarty er til at lave HTML. Når du henter data fra serveren med Ajax håber jeg du formaterer det med enten XML eller Json.

>> Såfremt jeg vælger PhpTAL, hvordan spiller det med ex. AJAX når der udskrives tabeller og lign?

Jeg forstår ikke hvad du mener med "udskrives tabeller og lign"


Sidekommentar:
Jeg har kun brugt TAL meget lidt i PHP, men det skyldes at jeg aldrig arbejder med PHP... :-) TAL findes til mange forskellige sprog, bl.a. Java, Python, Ruby og flere. Jeg arbejder selv med det til dagligt i Python, og det er rigtig lækkert sammenlignet med eksempelvis Smarty.

Med Smarty får du naturligt meget logik ind i dit template, og så forsvinder grænsen mellem program og præsentation for meget efter min mening. TAL-kode skriver du som attributer på HTML-tags, hvilket gør det meget nemmere at lave "ren" og overskuelig html.
Avatar billede groyk Novice
23. juni 2009 - 16:08 #4
Naturligvis sender jeg AJAX med XML eller Json. Bruger som regl Json, pa det har det korteste output i de fleste situationer.

Det jeg mener er at idag bruger jeg jo JS til at generere ex. en tabel hvori jeg indsætter min AJAX request. altså JS funktionen generere tabellen.

Hvis jeg skifter til TAL, skal dette ved stadig væk foregå i JS, men kan man forklare TAL det?
Avatar billede j4k0b Nybegynder
23. juni 2009 - 17:25 #5
Som sagt skal du kun bruge TAL eller Smarty til at lave HTML. Men du kan pakke JavaScript ind i din HTML med <script> tags. Det Javascript kode du har skal enten ligge i HTML-kilden eller i en seperat fil, som det har gjort på din side hidtil.

Ellers ved jeg ikke hvad du mener :-)
Avatar billede groyk Novice
23. juni 2009 - 21:58 #6
Måske har jeg misforstået noget??

Hvis JS skal ligge i HTML kilden, vil det så ikke sige TAL kilden. Der skal vel ikke skrives HTML Mere, eller??

Hvis ovenstående er korekt, vil det sige at jeg kan placere JS i TAL filen og kode JS som var det normal HTML.

Håber jeg forklare mig så det er forståeligt :-)
Avatar billede j4k0b Nybegynder
24. juni 2009 - 08:04 #7
Korrekt... :-)

Eksempel:

Du videregiver to variabler til PHPTAL til parsning af din template fil: "overskrift" og "broedtekst" (begge indeholder en streng)

I kilden nedenfor, læg mærke til "tal:" namespace.


<html>
<head>
    <title>Test side</title>
    <script type="text/javascript" src="noget.js"></script>
    <script type="text/javascript">
    <!--
        function minFunktion() {
            // Gør noget
        }
    //-->
    </script>
</head>
<body>

<h1 tal:content="overskrift"></h1>
<p tal:content="broedtekst"></p>
<p><a href="java script:minFunktion()">Gør noget...</a></p>

</body>
</html>


------

Det resulterer i:


<h1>Streng givet til PHPTAL</h1>
<p>Også en streng givet til PHPTAL :-)</p>
<p><a href="java script:minFunktion()">Gør noget...</a></p>
Avatar billede j4k0b Nybegynder
24. juni 2009 - 08:06 #8
Det er i øvrigt det samme mht. JavaScript, om du vælger Smarty eller TAL
Avatar billede groyk Novice
24. juni 2009 - 08:41 #9
OK, så er jeg med.

Troede faktisk at Smarty TAL mv. var et abstraktions lag til HTML.
Således at man ikke længere skulle bekymre sig om valid kode.

Men ud fra dit eksempel er det jo "bare" variabler defineret på en anden måde end med PHP.

Tror jeg vil prøve at smide PHPTAL på til mit næste projekt.

Synes nu stadig vældig godt om min AJAX ide. Dog er den kun brugbar til Intranet / administrations sider og andre sider der ikke har behov for indexering i søgemaskinerne.

Venligst smid et svar som tak for hjælpen og vejledningen.
Avatar billede j4k0b Nybegynder
24. juni 2009 - 10:44 #10
God fornøjelse :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester