Зачем генерировать HTML в PHP:
- JavaScript должен определять поведение, а не содержимое.
- Создание в JavaScript требует больше разметки (многострочные строки не так просты, как в PHP).
- Сложнее поддерживать, если ваш HTML генерируется в нескольких местах (PHP & JS).
- Вы можете использовать функции манипулирования DOM в jQuery для создания своего HTML, но в долгосрочной перспективе вы стреляете себе в ногу.
- Создавать HTML на сервере быстрее, чем в браузере (в вычислительном смысле).
- Зацикливание легче с PHP & ndash; легко создать разметку таблицы.
- Вы сохраняете некоторую совместимость, если у пользователя отключен JavaScript, если вы выводите разметку при загрузке страницы.
Зачем генерировать HTML в jQuery:
- Вы бы сэкономили немного пропускной способности.
- Связывание событий может быть проще.
Итак, я за первый вариант, генерирующий HTML в PHP.
Визуальное сравнение двух методов, создание простой таблицы.
Вариант 1 с использованием PHP:
// PHP
$html = '<table>';
foreach($data as $row) {
$html .= '<tr>';
$html .= '<td><a href="#" class="button">Click!</a></td>';
$html .= '<td>'.$row['id'].'</td>';
$html .= '<td>'.$row['name'].'</td>';
$html .= '</tr>';
}
$html .= '</table>';
echo $html;
?>
// jQuery
$('#container').load('handler.php', function() {
$('#container a.button').click(function() {
// Do something
});
});
Вариант 2, используя jQuery:
// PHP
echo json_encode($data);
// jQuery
$.ajax({
url: 'handler.php',
dataType: 'json',
success: function(data) {
var table = $('<table />');
var len = data.length;
for(var i = 0; i < len; i++) {
var row = $('<tr />');
var a = $('<a />').attr('href', '#').addClass('button');
row.append($('<td />').append(a));
row.append($('<td />').html(data[i].id);
row.append($('<td />').html(data[i].name);
table.append(row);
}
table.find('.button').click(function() {
// Do something
});
$('#container').html(table);
}
});
С точки зрения дизайна / простоты кодирования / красоты, я бы определенно сказал: подход с PHP.