2009-11-21 12 views
9

Co według Ciebie jest lepsze?Szablon HTML + JSON a serwer HTML

Służy do wyniku Ajax:

  1. HTML, który został wygenerowany na serwerze
  2. zwrócić dane, które zostaną wykorzystane w szablonie?

Myślę, że plus dla renderowania serwera to ucieczka, łatwa, bardziej złożona logika, kiedy potrzeba dużo danych!

Odpowiedz

5

Jedną z zalet, którą widzę przy "przetwarzaniu json w celu tworzenia znaczników" po stronie klienta, jest zmniejszenie rozmiaru przenoszonych danych.

Odpowiedź na twoje pytanie zależy od rodzaju aplikacji, którą tworzysz. Powiedz, jeśli masz aplikację, w której wyświetlasz listę (stale aktualizujących) komunikatów o stanie na stronie; wysłanie html byłoby cięższe, ponieważ zawierałoby wszystkie znaczniki do ułożenia komunikatów o stanie. Zamiast tego obiekt json będzie wystarczająco lekki i może być łatwo przetworzony po stronie klienta na wymagany znacznik.

6

Oba podejścia mają zalety i wady. Zwracanie JSON lub XML z serwera i używanie szablonów javascript do konwersji na HTML jest bardziej RESTful i ma tę zaletę, że oddziela dane i prezentację i umożliwia wielu użytkownikom łatwe korzystanie z niego. Wady to to, że jest więcej pracy do wykonania w javascript.

Z drugiej strony, jeśli serwer zwraca HTML, wszystko co musisz zrobić, to wstawić go gdzieś do DOM. Niestety w tym przypadku markup i dane są mieszane i innym klientom trudniej byłoby wyodrębnić dane bez formowania (wyobraź sobie na przykład komputer lub aplikację mobilną, która chce korzystać z usług z Twojej witryny).

IMHO, jeśli jedynym konsumentem jest Twoja witryna, wówczas lepszym rozwiązaniem będzie zwracanie kodu HTML.

+1

Posiadanie serwera, który wysyła HTML bardziej ciasno paruje to, co masz na serwerze z tym, co masz uruchomione w przeglądarce. Jeśli chcesz zrobić coś więcej niż jedną rzecz z tym wynikiem, nawet na tej samej stronie, to posiadanie JSON będzie wielką wygraną. Innymi słowy, jeśli generujesz dynamiczny kod HTML na serwerze, dodałeś kolejne miejsce, w którym musisz rozwiązać problem z układem, a firebug nie będzie tak pomocny, ponieważ będziesz musiał zmienić logiki po stronie serwera, aby rozwiązać problemy z prezentacją. – Suppressingfire