Какой самый эффективный способ внедрить новый код в DOM? - PullRequest
2 голосов
/ 26 августа 2009

Я участвую в небольшом споре с разработчиком серверной части моего проекта (я работаю над интерфейсом) о внедрении новых вещей в DOM. Он утверждает, что лучший способ ввести большой объем кода (полученный через ajax) - это отправить объект JSON, а затем выполнить итерацию по каждому элементу этого объекта. Он говорит, что это сэкономит некоторую пропускную способность и будет более дружественным к серверу.

Очевидно (для меня, по крайней мере :-)), это означает, что ОЧЕНЬ много циклов процессора на клиенте.

Данные в основном представляют собой таблицу с 20-30 строками (2-3 столбца в каждой), что означает несколько (бесполезных) итераций.

С другой стороны, я думаю, что лучший способ - это отправить чистый XHTML (источник, сгенерированный сервером) и просто внедрить его на место. Это означает только один цикл процессора ($('selector').html(data), где data - данные, полученные с помощью AJAX, но также означает много раздутого HTML-кода.

Я использую jQuery (но я думаю, что это не слишком важно).

Итак, что вы думаете, ребята? Спасибо!

Ответы [ 3 ]

7 голосов
/ 26 августа 2009

$('selector').html(data) не один цикл процессора; это один вызов метода. Браузер должен обрабатывать весь этот HTML.

Единственный способ определить это - протестировать оба метода и решить, насколько вы заботитесь о времени отклика клиента и нагрузке на сервер. Из вашего описания, это, вероятно, не имеет большого значения в любом случае. Я подозреваю, что вы захотите оптимизировать для третьего фактора: комфорт разработчика. Делайте то, что имеет смысл и прост в обслуживании.

4 голосов
/ 26 августа 2009

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

Кроме того, JSON имеет меньшую занимаемую площадь, чем XML, и также обычно лучше "разбирается человеком". Наибольшим преимуществом XMl является то, что он существует уже давно и является стандартом, поэтому у вас под рукой есть и инструменты, и знающая рабочая сила. JSON, с другой стороны, немного более неясен . Конечно, любой разработчик, достойный своей зарплаты, сможет изучить его быстрее, чем я смогу написать это. Подумайте об этом:

  • имеет синтаксис javascript и
  • Это та же концепция XML.

Об отправке HTML Причудливый режим говорит:

Если фрагмент HTML содержит формы или если принимающий элемент HTML является формой, этот метод вызывает ужасные ошибки в проводнике.

(...)

Я собираюсь внимательно изучить JSON и, возможно, переключиться на него для приложения с неограниченным доступом, которое я имею в виду. Тем не менее, я чувствую, что XML на данный момент остается лучшим общим форматом, главным образом потому, что люди привыкли к нему.

Кроме того, фрагменты HTML могут стать довольно сложными (...) Таким образом, сценарий на стороне сервера, который генерирует HTML, может стать довольно сложным.

Более того, отправляя только HTML, вы можете просто вставить информацию, вы не будете получать информацию, вы будете получать фрагменты, поэтому вы не сможете работать с с ней. , Помните, что преимущество AJAX состоит в том, чтобы иметь динамические страницы , а не страницы, некоторые части которых обновляются без перезагрузки полной страницы . Вы можете использовать его для этого, и это нормально, и допустимое использование, но вы не используете потенциал.

Даже при вставке HTML может быть быстрее, чем dom манипулирование, я не думаю, что это слишком много (кроме проблем, которые могут возникнуть с IE 6). Это вы должны проверить и посмотреть, действительно ли для вашего использования это узкая часть производительности.

Я склонен согласиться с заключительным аргументом предыдущей ссылки .

Хотя я бы хотел сказать, что один из них «лучший», я думаю, что выбор правильного формата зависит от обстоятельств, а не от каких-либо теоретических размышлений.

2 голосов
/ 26 августа 2009

Это зависит от данных, которые возвращаются, в большинстве ситуаций, в которых я нахожусь. Если сервер отвечает формой или общим содержимым, я предпочитаю прямой XHTML, как и вы.

В случае, если мне нужно получить фактические данные , я предпочитаю формат JSON. Да, мне нужно сгенерировать разметку на стороне клиента, но, поскольку все хорошо организовано в массиве JSON, я могу выбирать и фильтровать по мере необходимости. Это также позволяет мне легко изменить представление данных позже, без необходимости вовлекать нашего бэк-энда (его список дел всегда 4-5 дней!)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...