На сайте электронной коммерции при добавлении товара в корзину я бы хотел показать всплывающее окно с опциями, которые вы можете выбрать. Представьте, что вы заказываете iPod Shuffle, и теперь вам нужно выбрать цвет и текст для гравировки.
Мне бы хотелось, чтобы окно было модальным, поэтому я использую лайтбокс, заполненный Ajax-вызовом. Теперь у меня есть два варианта:
Вариант 1. Отправка только данных и создание разметки HTML с использованием JavaScript.
Что хорошо в этом, так это то, что он сокращает Ajax-запрос до минимума и не смешивает данные с разметкой.
Что не так хорошо в этом, так это то, что теперь мне нужно использовать JavaScript для рендеринга, вместо того, чтобы делать это на стороне сервера. Я мог бы немного очистить подход, используя шаблонное решение на стороне клиента .
Вариант 2. Отправьте разметку HTML
Что хорошо в этом, так это то, что у меня может быть тот же серверный шаблонизатор, который я использую для остальных моих задач рендеринга (Django), для рендеринга лайтбокса. JavaScript используется только для вставки фрагмента HTML на страницу. Так что он явно оставляет рендеринг движку рендеринга. Имеет смысл для меня.
Но по какой-то причине мне не удобно смешивать данные и разметку в вызове Ajax. Я не уверен, что заставляет меня чувствовать себя неловко по этому поводу. Я имею в виду, что все веб-страницы обслуживаются одинаково - данные плюс разметка - верно?
Ответы:
JSON должен просто содержать данные и без разметки. В долгосрочной перспективе этот подход является более расширяемым, поскольку существует потенциал для использования данных JSON в других частях вашего сайта. Если вы включите разметку, то использование тех же данных для заполнения другого шаблона станет намного сложнее.
источник
Я бы отправил данные в запросе и создал бы разметку в js. Еще одним преимуществом будет то, что будет меньше использования полосы пропускания. Это своего рода личное предпочтение, но лучше оставить клиентскую разметку на стороне сервера. У меня также есть веб-сайт Django, и я использую систему шаблонов только для размещения на странице некоторых переменных json (на один меньше ajax req.) И использования файлов src при разработке на моей машине. Все на стороне клиента сделано с ExtJS.
источник
Я думаю, что вы говорите о плюсах и минусах обоих. Почему бы не посмотреть на третий вариант создания javascript для вашего лайтбокса из представления django. Тогда ваш JSON просто содержит данные для его обновления для каждого представления?
Что вы должны сделать, это обернуть весь шаблонный код в переменные javascript, а затем вывести их с помощью javascript после получения запроса JSON на стороне клиента.
источник
Вы должны использовать шаблонизатор для разметки и хранить скрытое поле где-то для хранения значений, которые затем можно найти в документе с помощью селектора.
источник