Ich habe mich immer gefragt, wie ich entscheiden kann, ob ich serverseitigen Code oder clientseitigen Code zum Erstellen von HTML-Seiten verwenden möchte. Ich werde ein sehr einfaches PHP vs Javascript/Jquery Beispiel verwenden, um meine Frage weiter zu erklären. Ihr Rat und Kommentar wird sehr geschätzt.Erstellen von Webseiten auf der Serverseite oder der Clientseite?
Angenommen, ich möchte einem Benutzer eine Webseite präsentieren, um einen Berichtstyp auf meiner Webseite auszuwählen. Was macht mehr Sinn?
Für serverseitige Erstellung, ich dies tun würde:
<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>
mit clientseitigen Code, würde ich das Javascript bekommen die Seite wie folgt aufzubauen:
<!-- 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>
alles, was ich auf dem Server benötigen würde, ist eine pHP-Skript Datendump wie:
<?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);
?>
Dies ist ein sehr einfaches Beispiel, aber fro m dies sehe ich Vor- und Nachteile in verschiedenen Bereichen.
1 - Die serverseitige Lösung hat den Vorteil, dass sie die eigentliche Programmierlogik dahinter verbergen kann, wie alles aufgebaut ist. Wenn der Benutzer die Seitenquelle betrachtet, sehen sie nur die bereits erstellte Webseite. Mit anderen Worten, die clientseitige Lösung gibt Ihren gesamten Quellcode und Ihre Programmierlogik darüber preis, wie bestimmte Dinge gebaut werden. Aber Sie könnten einen Minifier verwenden, um Ihre Quelle kryptischer aussehen zu lassen.
2 - Die clientseitige Lösung überträgt die "Ressourcenlast" auf das Clientsystem (dh der Browser muss die Computerressourcen des Clients verwenden, um den größten Teil der Seite zu erstellen), während die serverseitige Lösung nicht funktioniert Server.
3 - Die Client-seitige Lösung ist wahrscheinlich eleganter, wenn es um Wartbarkeit und Lesbarkeit geht. Aber andererseits hätte ich PHP-Bibliotheken verwenden können, die HTML-Steuerelemente modularisieren und viel lesbarer machen.
Irgendwelche Kommentare? Danke im Voraus.
Tatsächlich macht Google große Fortschritte bei der Indexierung von JS-Inhalten. Siehe zum Beispiel http://googlewebmastercentral.blogspot.com/2007/11/spiders-view-of-web-20.html – nico