![]() |
HTML generering, klient eller server?
Sitter just nu och funderar om ett PHP skript som anropas via Ajax skall returnera färdigformaterad HTML kod som Javaskript bara skall lägga i ett element eller om skriptet skall returnera data som JSON och sedan kan Javaskriptet formatera upp det med tex. templates.
Enda nackdelen med server-side genereringen jag kommer på är att mer data skickas. Vilka Er era åsikter, vilket är bäst och mer framtidssäkert? |
Det kommer troligen inte märkas någon större skillnad för användaren eller för belastningen på din server om det inte är stora mängder data med massa fält.
Är det en hel sida tycker jag du ska generera HTML på servern. Är det delar eller enskilda fält beror det på hur många olika fält är det som ska uppdateras. Hur många är det? |
Det är en meddelande-sida, där man har ett antal flikar (inkorg, skickat, skicka nytt, ...). Antalet meddelanden kan vara svårt att förutse men så som det är nu funderar jag på att begränsa det till 20st.
|
Låt servern svara med endast data eftersom:
Det blir lite mer jobb för webbläsarna men jag tycker att fördelarna är fler och väger tyngre än nackdelarna. |
Jag skulle nog köra JSON-data från servern som sedan läggs in i html-template (ex. mustache) mha javascript. Mina $0.02.
|
Tack grabbar, vi tänker i samma bana. JSON is a way to go.
|
Citat:
Jag skulle säga att det är väldigt mycket enklare att få bra struktur på server side-genereringen än om man ska hantera massa logik med JavaScript. JavaScript-kod är i min mening mycket svårare att strukturera, felsöka och underhålla. Därför tycker jag inte man ska ha för mycket logik där om det inte finns en uppenbar vinst med det(vilket jag är osäker på att det finns i det här fallet). Gör man dessutom någon form av template där man stoppar in datan får man bra struktur med separering av data och och markupen. Citat:
Med den här lösningen lägger du istället över mycket av beräkningarna på klienten så användare med långsammare datorer eller webbläsare med långsamma JavaScriptmotorer vilket mycket väl kommer ge en märkbar prestandaförsämring. |
Citat:
|
Citat:
|
Jag håller med ITisGood till 100%. Det finns inget som hindrar dig från att jobba med View separat på servern även vid ett Ajax anrop. Jag tycker inte javascript ska användas för layout. Det är inte vad det är avsett för i min mening. PHP/Asp däremot är avsett för att generera HTML kod dynamiskt.
Du har ju sannolikt en template för hur sidan ska se ut som används av serversidan redan. Varför man då ska göra ytterligare en template för klientsidan att använda förstår jag inte. Det om något skapar ju problem vid uppdateringar. Om inkorg visas som standard när man laddar "mina meddelanden" så gissar jag att inkorgen inkluderas redan på serversidan, och att det inte är förrän man byter till "skickat" eller annan flik i "mina meddelanden" som den utnyttjar Ajax. Sålunda har du ju redan allt på serversidan som krävs för att generera den layout du vill ha. |
Citat:
Extra markup påverkar responsiviteten och det behövs inte mycket data förrän det blir påtagligt. Det är ju en av anledningarna till att man hellre använder JSON istället för XML. |
Med dagens uppkopplingar anser jag inte att det är försvarbart att optimera så. om det handlar om 0.5 - 1kb så är den hastighetsförlusten marginell jämfört med vad själva httpRequesten och svaret tar att generera. Men om vi pratar om stora datasamlingar med 50000 rader kan man säkert göra en noterbar vinst i nedladdningstid genom att bara svara med någon typ av ren data. Men då är det frågan hur snabbt klienten kan bygga upp sidan. Speciellt om den ska använda en separat template.
Alla webbläsare är inte så snabba som Chrome på att hantera Javascript. |
Citat:
Citat:
Båda sätten funkar och vilken väg man väljer beror på hur man vill jobba. För- och nackdelar finns alltid. |
Vad är det mer specifikt du syftar på med responsivitet då?
|
I det här fallet: tiden det tar för klienten att läsa in data.
|
Ja man får väl väga de 100-delar man tjänar på ett normalstort dokument jämfört med enkelheten att underhålla och införa ändringar när man har det med samma mallar som övriga siten.
Vad du inför genom att låta javascript hantera data är ytterligare än felkälla då du först ska låta serversidan hantera och formater datan, och sedan ska den hanteras ytterligare en gång på klienten med javascript. Jag kan inte föreställa mig när JSON-data innebär fördelar när innehållet i en hel div ska bytas ut. Ett tu tre vill du ha en flik som heter almanacka eller något som inte passar med de satta UL-listorna med satta klasser. Då måste du arbeta på flera ställen istället för att bara skapa en ny controller och template för serversidan som genererar hela innehållet åt dig. Nya javascript och jobbig logik på klientsidan behövs inte. Bara en ny flik som gör en korrekt httprequest behövs. Du skapar dessutom möjligheter för de som inte har javascript att komma åt sidan genom att göre en include på serversidan. JSON-data har helt klart användningsområden det med. |
Hmm, vi verkar inte vara på samma bana. Jag försöker förklara lite mer konkret.
Citat:
HTML-kod:
<h3>Skickade meddelanden</h3> För att fylla sidan med meddelanden anropar vi servern med ett Ajax-anrop. När svaret levererats fyller vi vyn med innehåll och det gör vi genom att klona templaten, loopa igenom svaret och för varje post använder vi klonen genom att lägga till innehåll i respektive placeholder (.date, .title etc). Sedan lägger vi till klonen i en container som inte är kopplad till DOM-trädet. Först när loopen är klar lägger vi till containern på sidan. Ja, klienterna får jobba lite mer. Fördelarna är som jag skrev förut att man kan ändra struktur i vyerna, använda olika templates på olika ställen men fortsätta använda samma metod som hämtar data utan att behöva ändra i nån logik. Den här lösningen passar kanske inte för alla scenarion men det är det inte mycket som gör. Så länge det inte finns några särskilda krav tycker jag att det här är en bra lösning. Citat:
Citat:
Citat:
|
Jag köper det mesta du skriver, även om det inte passar mitt sätt så bra. Liknelsen med en web service var bra och kommer göra att jag tänker en gång till innan jag väljer tillvägagångssätt nästa gång.
När det gäller exemplet med almanackan håller jag inte med dig, men jag vet inte om jag orkar utveckal scenariot så det är förståeligt utan att använda bilder att förklara med. Det är väl just det scenariot som gjort att jag generellt låter PHP baka ihop hela kakan åt mig och javascriptet får bara byta ut innehållet i diven. Motsvarande jquery.load() helt enkelt. |
Den biten var jag inte helt med på verkar det som. Det finns säkert scenarion där det är bättre att baka ihop Html:n i svaret men jag kommer troligen göra som jag brukar ändå. :D
|
icanhazjs.com
Citat:
|
Alla tider är GMT +2. Klockan är nu 14:41. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson