web-dev-qa-db-ja.com

PHP vsダイナミックHTMLページのJavaScript

通常、動的に生成されたHTMLマークアップを作成するとき、PHPを使用して情報を保存し、それをループしてページに要素を作成します。1つの例はナビゲーションです。オブジェクトをループしてマークアップをエコーし​​ますこれは、開発または保守中に小さな(または大きな)変更を行う必要がある場合に非常に役立ちます。

最近、JavaScriptを使用してこれを行うべきかどうか疑問に思っています。同じ原理ですが、addElementを使用します。

これについての意見を聞きたかっただけです。長所、短所、php vs js、seoに関する考慮事項など.

どうもありがとう!

21
Eric

クライアント側で行うことは次のことを意味します。

  1. 単一の環境ではなく、多くの異なる環境でそれを行う
  2. ユーザーがJSなしでやってくると(何らかの理由で)壊れる
  3. 大部分のボット(検索エンジンを含む)で機能しない
  4. すべてのロジックの変換に開発時間を投資する
  5. サーバーに追加のリクエストを行うためにブラウザを要求し、ロード時間を遅くします

サーバー側ではなくクライアント側で何かを行う必要があるかどうかを判断するとき、経験則として次の2つの質問を自問してください。

  1. ユーザーは、何かをしたことに応じて即座にフィードバックを得ることができますか?例えば送信しようとしているフォームの不適切なデータのエラーメッセージ。もしそうなら、それをクライアント側で行うことは有益でしょう。
  2. サーバー側で実行できますか?その場合、信頼性が高いため、サーバー側で最初に実行します(また、非化粧品の場合は、干渉しにくくなります)。 機能するものの上に構築
40
Quentin

それは、いずれかの状況ではありません。通常、両方を行う必要があります。

サーバーはすべてのデータを把握する必要がありますが、クライアントはレンダリングする必要があるため、クライアント側で実行するとおそらく遅くなります。これには複数のリクエストが含まれる可能性が高く(ほとんどの場合)、DOM操作は遅くなります(特に古いブラウザでは)。

4
El Yobo

ベストプラクティスは、サーバー側で必要なマークアップを作成することです。この理由は次のとおりです。

SEO:ほとんどのクローラーボットはJavascriptを解析しないため、addElementで生成する重要なものはすべてスキップします。

アクセシビリティ:サイトは基本的にJavascriptなしで機能するはずです。 Kindle、古いブラックベリー、ノキア、またはデータを備えたその他のフィーチャーフォンでサイトを閲覧している可能性のある人を考えてください。彼らはすべての派手なスタイルと効果を必要としませんが、少なくともあなたのサイトを回避できる必要があります。

一貫性:JSはさらに別のレベルのブラウザ間変動性を追加できます。必要なマークアップのクライアント側レンダリングに依存する理由サーバー側で実行します。

もちろん、すべてのJSデスクトップアプリを開発している場合、または Sencha Touch フレームワークのようなものを使用している場合、このアドバイスは大いに活用することができます。

4
Charlie Tran

SEOが懸念事項である場合、状況は単純です。JSは索引付けされていません。

UIの問題もあります。JSが有効になっていない場合、JSに依存するものはロードされません。

1

1つの可能性は、どの種類のユーザーがサイトを閲覧しているかを検出することです。

  • ボットの場合:サーバー側で解析すると、グラフィカルなものなしで、ボットに必要なものを出力できます...

  • モバイルの場合:チャーリーが指摘したように、Sencha Touchなどを使用して、モバイル向けに最適化されたバージョンを表示します

  • Javascriptを使用しない標準ブラウザの場合:サーバー側でページをレンダリングします

  • 標準ブラウザの場合、javascriptを有効にすると、サーバー側からデータを送信する(またはAjaxで読み込む)だけで、クライアント側からデータをレンダリングできます。

Mustache のようなものを使用できます。これは、多くのサーバー側言語(PHP、Ruby、Javaなど)で実行されるテンプレートエンジンですが、Javascriptでもクライアント側のページレンダリングが可能です。

jQueryMootoolsDojo または ExtJS のようなJavascriptフレームワークを使用してみてください。すべてのブラウザで実行されるコード。

0
ygosteli

PHPは、Handlebars型のテンプレート化、サーバー側のコンテンツの高速置換など、いくつかの点で優れています。しかし、単一ページのアプリケーションやゲーム、Webサイトのリアルタイム更新など、いくつかの点でも優れていません。 JavaScriptが強力なのはこうしたことです。

0
Gort