Podczas dodawania przedmiotu do koszyka w witrynie e-commerce chciałbym wyświetlić wyskakujące okno z opcjami, które możesz wybrać. Wyobraź sobie, że zamawiasz iPoda Shuffle, a teraz musisz wybrać kolor i tekst do grawerowania.
Chciałbym, aby okno było modalne, więc używam lightbox wypełnionego wywołaniem Ajax. Teraz mam dwie opcje:
Opcja 1: Wyślij tylko dane i wygeneruj znaczniki HTML za pomocą JavaScript
Zaletą jest to, że ogranicza żądanie Ajax do minimum niedźwiedzia i nie łączy danych ze znacznikami.
Nie jest tak świetne w tym, że teraz muszę używać JavaScript do renderowania, zamiast mieć silnik szablonów po stronie serwera. Być może będę w stanie trochę oczyścić to podejście, używając rozwiązania szablonowego po stronie klienta .
Opcja 2: Wyślij znacznik HTML
Co dobre w tym, że mogę mieć ten sam silnik szablonów po stronie serwera, którego używam do reszty moich zadań renderowania (Django), do renderowania lightbox. JavaScript służy tylko do wstawiania fragmentu HTML na stronie. Więc wyraźnie pozostawia renderowanie w silniku renderującym. Dla mnie to ma sens.
Ale z jakiegoś powodu nie czuję się komfortowo mieszając dane i znaczniki w wywołaniu Ajax. Nie jestem pewien, co sprawia, że czuję się z tego powodu nieswojo. Mam na myśli, że w ten sam sposób wyświetlana jest każda strona internetowa - dane plus znaczniki - prawda?
Odpowiedzi:
JSON powinien po prostu zawierać dane i bez znaczników. Na dłuższą metę takie podejście jest bardziej rozszerzalne, ponieważ istnieje możliwość wykorzystania danych JSON w innych częściach witryny. Jeśli dodasz znaczniki, użycie tych samych danych do wypełnienia innego szablonu stanie się znacznie trudniejsze.
źródło
Prześlę dane w żądaniu i zbuduję znaczniki w js. Dodatkową korzyścią byłoby mniejsze zużycie przepustowości. To rodzaj osobistych preferencji, ale lepszym pomysłem jest utrzymywanie znaczników po stronie klienta z dala od strony serwera. Mam również witrynę internetową Django i używam systemu szablonów tylko do umieszczania na stronie niektórych zmiennych Json (do zrobienia mniej o jedno ajax) i używania plików SRC podczas programowania na moim komputerze. Cała strona klienta odbywa się za pomocą ExtJS.
źródło
Myślę, że mówisz o zaletach i wadach obu. Popatrz na trzecią opcję generowania javascript dla twojego lightboksa z widoku django. Czy zatem Twój JSON zawiera dane, aby zaktualizować je dla każdego widoku?
Powinieneś być w stanie owinąć cały kod szablonu w zmienne javascript, a następnie wyprowadzić je za pomocą javascript po otrzymaniu żądania JSON po stronie klienta.
źródło
Powinieneś używać silnika szablonów do znaczników i przechowywać gdzieś ukryte pole do przechowywania wartości, które możesz następnie znaleźć w dokumencie za pomocą selektora.
źródło