Projektowanie frontendu - dobra praktyka z contentem

0

Siema

To pytanie może się wydać dla większości was, szczególnie tych bardziej doświadczonych dość trywialne. Nigdy nie miałem ku temu powodu do zastanowień, może przez brak potrzeby.
A mianowicie ciekawi mnie jak "dobrze" zaprojektować stronę pod kątem layoutu. O co dokładniej chodzi?

Załóżmy, że mam wizje wyglądu strony, przygotowałem jakiś szablon bootstrapem/foundation albo pociąłem sobie to w photoshopie, nie istotne, po prostu mam pomysł. I chciałbym, żeby każda moja strona/podstrona itd trzymała się tego layoutu (wiadomo nie w 100% ale np menu, jakies tam paski nawigacji są statyczne) i teraz pytanie:

Przypuśćmy, mamy aplikacje w** javie + jstl** i pytanie: jak robie podstrony np. home.jsp, user.jsp, products.jsp czy cokolwiek - czy po prostu layout z głównego pliku przeklejać do każdej z tych stron i zmieniać ich zawartość według potrzeb, czy lepiej zrobić jeden plik w stylu "template.jsp" z elementami statycznymi i jednym tagiem w stylu "content" gdzie zawartość się zmienia i w nim dawać include dla podstron.
Tylko np w wypadku javy + springmvc jaki sens miałoby zwaracanie widoków z kontrolerów, jeśli używalibyśmy ciągle tego samego widoku(template.jsp), tylko w "content" ładowały by się te dynamiczne elementy.

Np w SPA mamy tak, ze jest część stała i część która się podmienia - zatem które rozwiązanie jest lepsze uzywając np JSTL czy freemarkera w javie - taki "SPA-style" czy copy-paste layoutu i podmiana zawartości wg potrzeby (tzn jeden plik na jedną podstrone powiedzmy)?

jeśli nagadałem bzdur forgive me, ale próbuje sobie dobrać jakiś sposób na to ;)

0

Witaj,
Muszę przyznać że zaczynam dopiero zabawę ze springiem, ale z tego co wiem, powinno się robić tak jak napisałeś z plikiem template.jsp.
I w tym miejscu rodzi się też pytanie, ponieważ wiem jak to zrobić w pythonowym frameworku django czy flask, ale jak robi się w to plikach jsp?

PS:
Chodzi mi o te bloki, które możesz zobaczyć tutaj
https://docs.djangoproject.com/en/1.7/topics/templates/

3

Duplikacja kodu nigdy nie jest dobra. Po zmianie koncepcji będziesz musiał zmieniać pliki z każdą z podstron, co po 20. zmianie Cię dobije :P. Już nie mówiąc o błędach, bo 10x więcej miejsc do zmian na pewno jakies wygeneruje.

0

@członek zarządu tak własnie myślałem, tylko teraz kwestia doboru jak przesyłać strony z kontrolerów. Bo przeciez musze zwrócić z nich widoki, więc zawsze zwracać template.jsp i do modelu dodać np. "content", "jakisKontent.jsp" i wtedy jak dam np. include we freemarkerze to mam (edit: wlasciwie w freemarkerze to akurat byloby jakisKontent.ftl, ale wiemy o co chodzi :))

<div>
<#include "${content}">
</div>

a templatów zrobić jeden, maks kilka (jeśli chciałbym zmienić wygląd strony np. całkowicie na którejs podstronie)

0

Looknij na to jak to wygląda w pythonie. Zwracasz template który jest "najwyżej" a on robi extenda na niższe i podmienia bloki.
Co do javy to znalazłem takie coś http://stackoverflow.com/questions/1296235/jsp-tricks-to-make-templating-easier

1

Rozkminiłem jak to jest z freemarkerem. Zerknij tutaj https://github.com/kwon37xi/freemarker-template-inheritance
Ja po prostu z controllera zwracam stringa z nazwą tego template który jest u samej góry, czyli w tym przypadku tego https://github.com/kwon37xi/freemarker-template-inheritance/blob/master/example/web/WEB-INF/ftls/index.ftl

1 użytkowników online, w tym zalogowanych: 0, gości: 1