Создание веб-страниц на стороне сервера или на стороне клиента?

Мне всегда было интересно, как выбрать между использованием кода на стороне сервера и кода на стороне клиента для создания 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>

Используя код на стороне клиента, я ' d получить 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 и делают его более читаемым.

Есть комментарии? Заранее спасибо.

5
задан JoJoeDad 1 December 2010 в 18:19
поделиться