2011-12-16 13 views
6

Poznaję silnik szablonów Jade dołączany do Express. Jak rozumiem, Jade pozwala na renderowanie po stronie serwera . Czy nie jest to suboptymalne z dwóch powodów:Czy ma sens renderowanie szablonów po stronie serwera?

1) Serwer musi obliczyć więcej, aby renderować szablony. Praca może być popchnięta po stronie klienta.

2) Po wyrenderowaniu szablonu lub części, a dane wymagają aktualizacji, po prostu wysyłają JSON do klienta, zamiast ponownego wysyłania pełnowartościowego kodu HTML, który jest przepustowością przepustowości.

Czy są to prawdziwe problemy z renderowaniem szablonu po stronie serwera?

Odpowiedz

7

Myślę, że to naprawdę zależy od rodzaju aplikacji, którą piszesz. Jeśli masz stronę, która w większości obsługuje pojedyncze strony, i rodzaj pasuje do typowej formy CRUD/MVC, może to nie być problem. Jednakże, jeśli piszesz coś dynamicznego z toną ajax, to jest problem :-)

Czuję twój ból - zostałem ukąszony przez to kilka razy w różnych stosach. Skończyło się na tym, że robiłem wszystkie moje powiązania list za pomocą wywołań asynchronicznych w przeglądarce, które są uruchamiane po załadowaniu strony głównej. To trochę śmierdzi, ponieważ podoba ci się ta pierwsza prośba o dostarczenie strony wcześniejszych danych listowych, ale kolejnej strony będącej pod wpływem wywołań ajaxowych. Po prostu nie chcę pisać szablonów raz dla serwera i raz dla klienta.

Nie sądzę/Jade obsługuje tego rodzaju wiązanie po stronie klienta. Dobrą wiadomością jest to, że istnieje kilka popularnych języków szablonowania, które działają zarówno na serwerze, jak i w przeglądarce. Dwa Znam to:

Nie widziałem nikogo przy użyciu płytek z wyraźnej, gdyż należy do projektu flatironjs jakiego rodzaju ma rozwija się własna struktura. Istnieje mnóstwo przykładów tam korzystania wąsy i EJS z Express:

Na marginesie, tutaj znajduje się lista pakietów szablonowych do węzła na miejscu Joyent za:

https://github.com/joyent/node/wiki/modules#wiki-templating

Moja sugestia jest rozpoczęcie EJS - to trochę bardziej na ziemię ze składnią nie będącą HAML-esque, obsługuje powiązanie z klientem i serwerem i wydaje się być dobrze akceptowane w stosie ekspresowym.

Happy Coding!

+0

Dzięki, to było przydatne. Przez "powiązania list" rozumiesz "zapełnianie danymi"? Wydaje się, że sugerujesz pracę tylko z szablonami po stronie klienta, więc nie trzeba ich przepisywać na serwer. Dlaczego więc wyróżniłeś języki szablonów, które działają zarówno na kliencie, jak i na serwerze? – Randomblue

+0

Kiedy mówię o powiązaniach list, mam na myśli prośbę o podanie listy danych (zwykle json/xml, paged), zastosowanie tej struktury danych do szablonu i renderowanie html do klienta. Nie sugeruję, że korzystasz tylko z szablonów po stronie klienta - powód, dla którego wskazałem te, które działają na obu, jest taki, że lubię je mieć w obu przypadkach. –

+0

Na przykład - lubię mieć szablon dla elementu listy w repeateru. Używanie tego na kliencie działa świetnie - żądasz strony danych i powiąż ją w kliencie. Co się stanie, gdy chcę użyć tego samego szablonu na nagłówku strony? Na pewno nie zamierzam wysyłać żądania http tylko dla tego nagłówka, ale nie chcę pisać tego samego szablonu tylko dla tego jednego użycia. W tym miejscu podwójnie zaprojektowane szablony stają się niesamowite. (przepraszam za super długi wpis) –

1

Jest jeszcze jeden ważny punkt. W zależności od celu Twojej witryny. Być może trzeba zwrócić uwagę na SEO lub nie.

W prostych słowach zawartość generowana z serwera indeksuje w wyszukiwarce. Inni nie. Ponieważ roboty indeksujące wyszukiwarki nie dbają o zawartość po stronie klienta.

+1

Google bot uruchamia teraz JavaScript, więc strona z renderowaniem treści może być indeksowana przez Google. – Matt

Powiązane problemy