Шаблоны на стороне клиента и на стороне сервера

Мне было интересно, какой лучший вариант будет для выполнения вызовов ajax для обновления списка имен пользователей. я тоже могу

а. выполните вызов ajax и верните объект пользователя, создайте html и добавьте его в div

build_html = function(obj) {
    html = 'username - ' + obj.username
    $('#container').append(html);
}

б. сделайте вызов ajax и дайте django вернуть HTML.

response = render_to_response ('user_item_template.html', {'user' : user})
return response._container

Если ответ успешен, я добавляю его в контейнер div.

Есть ли минусы в том, чтобы сделать это с помощью метода «b», потому что в зависимости от ситуации при создании html в javascript могут возникнуть проблемы, такие как неэкранированные символы, и в целом это просто беспорядочно.

Спасибо


person mirugai    schedule 03.07.2012    source источник


Ответы (2)


Если вы запрашиваете что-то, что будет использоваться исключительно для генерации HTML, просто верните HTML в качестве ответа. Нет необходимости задействовать клиент, и ваш сервер всегда будет быстрее при генерации, особенно если используется кэширование.

Если вам нужны данные из ответа, т. е. материал, который вы можете проанализировать позже, чтобы принять решение в своем JS, вам нужно вернуть JSON и обработать генерацию любой клиентской части HTML.

По сути, если вы можете обойтись возвратом плоского HTML, сделайте это.

person Chris Pratt    schedule 03.07.2012

Я бы сказал, что это зависит... В большинстве случаев (особенно если вы заботитесь о мобильных пользователях с медленным (более) соединением) передача меньшего количества данных важнее, чем время, затрачиваемое на синтаксический анализ JSON и создание HTML на стороне клиента.

Рекомендуем прочитать: http://ryanflorence.com/2012/client-v-server-templating/

person Dan F.    schedule 10.01.2013