Мне всегда было интересно, как выбрать между использованием кода на стороне сервера и кода на стороне клиента для создания HTML-страниц.Я буду использовать очень простой пример php vs javascript / jquery для дальнейшего объяснения моего вопроса.Ваши советы и комментарии очень ценятся.
Скажем, я собираюсь представить веб-страницу пользователю, чтобы выбрать тип отчета на моей веб-странице.Что имеет больше смысла?
Для создания на стороне сервера я бы сделал следующее:
<div id="reportChoices">
<?php
// filename: reportScreen.php
// just for the sake of simplicity, say a database returns the following rows
// that indicates the type of reports that are available:
$results = array(
array("htmlID"=>"battingaverage", "htmlLabel"=>"Batting AVG report"),
array("htmlID"=>"homeruntotals", "htmlLabel"=>"Home Run Totals report"),
);
foreach ($results AS $data)
echo "<input type='radio' name='reportType' value='{$data['htmlID']}'/>{$data['htmlLabel']}";
?>
</div>
Используя код на стороне клиента, я бы получил javascript для построения страницы, как показано ниже:
<!-- filename: reportScreen.html -->
<div id="reportChoices">
</div>
<!-- I could put this in the document.ready handler, of course -->
<script type="text/javascript">
$.getJSON("rt.php", {}, function(data) {
var mainDiv = $("#reportChoices");
$.each(data, function(idx, jsonData) {
var newInput = $(document.createElement('input'));
newInput
.attr("type", "radio")
.attr("name", "reportType")
.attr("value", jsonData["htmlID"])
mainDiv.append(newInput).append(jsonData["htmlLabel"]);
});
};
</script>
Все, что мне нужно на сервере, это php-скрипт для дампа данных, такой как:
<?php
// filename: rt.php
// again, let's assume something like this was returned from the db regarding available report types
$results = array(
array("htmlID"=>"battingaverage", "htmlLabel"=>"Batting AVG report"),
array("htmlID"=>"homeruntotals", "htmlLabel"=>"Home Run Totals report"),
);
echo json_encode($results);
?>
Это очень простой пример, но из этого я вижу плюсы и минусы в другой области..
1 - Преимущество серверного решения состоит в том, что он способен скрывать большую часть реальной логики программирования за тем, как все построено.Когда пользователь смотрит на источник страницы, все, что он видит, - это уже созданная веб-страница.Другими словами, клиентское решение выдает весь ваш исходный код и логику программирования о том, как создаются определенные вещи.Но вы могли бы использовать минификатор, чтобы ваш источник выглядел более загадочным.
2 - Решение на стороне клиента переносит «нагрузку на ресурсы» на клиентскую систему (т. Е. Браузер должен использовать ресурсы компьютера клиента для созданиябольшую часть страницы), в то время как решение на стороне сервера застревает, ну, в общем, сервер.
3 - Решение на стороне клиента, вероятно, более элегантно, когда дело доходит до удобства обслуживания и удобочитаемости.Но с другой стороны, я мог бы использовать библиотеки php, которые модулируют элементы управления HTML и делают его намного более читабельным.
Есть комментарии?Заранее спасибо.