通常、動的に生成されたHTMLマークアップを作成するとき、PHPを使用して情報を保存し、それをループしてページに要素を作成します。1つの例はナビゲーションです。オブジェクトをループしてマークアップをエコーしますこれは、開発または保守中に小さな(または大きな)変更を行う必要がある場合に非常に役立ちます。
最近、JavaScriptを使用してこれを行うべきかどうか疑問に思っています。同じ原理ですが、addElementを使用します。
これについての意見を聞きたかっただけです。長所、短所、php vs js、seoに関する考慮事項など.
どうもありがとう!
クライアント側で行うことは次のことを意味します。
サーバー側ではなくクライアント側で何かを行う必要があるかどうかを判断するとき、経験則として次の2つの質問を自問してください。
それは、いずれかの状況ではありません。通常、両方を行う必要があります。
サーバーはすべてのデータを把握する必要がありますが、クライアントはレンダリングする必要があるため、クライアント側で実行するとおそらく遅くなります。これには複数のリクエストが含まれる可能性が高く(ほとんどの場合)、DOM操作は遅くなります(特に古いブラウザでは)。
ベストプラクティスは、サーバー側で必要なマークアップを作成することです。この理由は次のとおりです。
SEO:ほとんどのクローラーボットはJavascriptを解析しないため、addElementで生成する重要なものはすべてスキップします。
アクセシビリティ:サイトは基本的にJavascriptなしで機能するはずです。 Kindle、古いブラックベリー、ノキア、またはデータを備えたその他のフィーチャーフォンでサイトを閲覧している可能性のある人を考えてください。彼らはすべての派手なスタイルと効果を必要としませんが、少なくともあなたのサイトを回避できる必要があります。
一貫性:JSはさらに別のレベルのブラウザ間変動性を追加できます。必要なマークアップのクライアント側レンダリングに依存する理由サーバー側で実行します。
もちろん、すべてのJSデスクトップアプリを開発している場合、または Sencha Touch フレームワークのようなものを使用している場合、このアドバイスは大いに活用することができます。
SEOが懸念事項である場合、状況は単純です。JSは索引付けされていません。
UIの問題もあります。JSが有効になっていない場合、JSに依存するものはロードされません。
1つの可能性は、どの種類のユーザーがサイトを閲覧しているかを検出することです。
ボットの場合:サーバー側で解析すると、グラフィカルなものなしで、ボットに必要なものを出力できます...
モバイルの場合:チャーリーが指摘したように、Sencha Touchなどを使用して、モバイル向けに最適化されたバージョンを表示します
Javascriptを使用しない標準ブラウザの場合:サーバー側でページをレンダリングします
標準ブラウザの場合、javascriptを有効にすると、サーバー側からデータを送信する(またはAjaxで読み込む)だけで、クライアント側からデータをレンダリングできます。
Mustache のようなものを使用できます。これは、多くのサーバー側言語(PHP、Ruby、Javaなど)で実行されるテンプレートエンジンですが、Javascriptでもクライアント側のページレンダリングが可能です。
jQuery 、 Mootools 、 Dojo または ExtJS のようなJavascriptフレームワークを使用してみてください。すべてのブラウザで実行されるコード。
PHPは、Handlebars型のテンプレート化、サーバー側のコンテンツの高速置換など、いくつかの点で優れています。しかし、単一ページのアプリケーションやゲーム、Webサイトのリアルタイム更新など、いくつかの点でも優れていません。 JavaScriptが強力なのはこうしたことです。