[解決済み] ReactJSのサーバーサイドレンダリングとクライアントサイドレンダリングの比較
質問
ReactJSを勉強し始めたところ、サーバーサイドとクライアントサイドの2つの方法でページをレンダリングできることがわかりました。しかし、それをどのように併用するのかがわかりません。アプリケーションを構築するために2つの別々の方法なのか、それとも一緒に使うことができるのでしょうか?
もし併用できるとしたら、どのようにすればよいのでしょうか。サーバー側とクライアント側で同じ要素を重複して使用する必要があるのでしょうか。あるいは、アプリケーションの静的な部分をサーバー側で、動的な部分をクライアント側で構築するだけで、すでにプリレンダリングされているサーバー側との接続は必要ないのでしょうか?
解決方法は?
あるWebサイト/Webアプリケーションに対して、reactを使用することができます。 クライアント側 , サーバーサイド または 両方 .
クライアントサイド
こちらは、完全にブラウザ上でReactJSを動かしている状態です。これは最もシンプルな設定であり、ほとんどの例(例えば http://reactjs.org ). サーバーによってレンダリングされる最初の HTML はプレースホルダーであり、すべてのスクリプトが読み込まれると、ブラウザに UI 全体がレンダリングされます。
サーバーサイド
ここでは、ReactJSをサーバーサイドのテンプレートエンジンと考えてください(jadeやhandlebarsなど...のように)。サーバーによってレンダリングされたHTMLには、あるべきUIが含まれており、スクリプトのロードを待つ必要はありません。あなたのページは、検索エンジンによってインデックスされることができます(javascriptを実行しない場合)。
UIはサーバー上でレンダリングされるため、イベントハンドラは一切動作せず、インタラクティブ性もありません(静的なページとなります)。
両方
ここでは、最初のレンダリングはサーバーで行われます。そのため、ブラウザが受け取るHTMLには、あるべきUIがそのまま反映されています。スクリプトが読み込まれると、仮想 DOM がもう一度レンダリングされ、コンポーネントのイベント ハンドラが設定されます。
こちらでは、全く同じ仮想DOM(ルートReactJSコンポーネント)を、同じ
props
サーバでレンダリングに使用したものと同じです。さもなければ、ReactJS はサーバー側とクライアント側の仮想 DOM が一致しないと文句を言うでしょう。
ReactJSは再レンダリング時に仮想DOMを差分化するため、実DOMは変異しない。イベントハンドラのみが実際の DOM 要素にバインドされます。
関連
-
Vue Element-uiは、アイコンを追加するためのツリーコントロールノードを詳細に実装しています。
-
Vue+ElementUIによる大規模なフォームの処理例
-
元のイベントが実行されなかった後に要素を追加するためのjQueryソリューション
-
Vueでルートネスティングを実装する例
-
Vueのフォームイベントのデータバインディングの説明
-
OSSアップロードエラーを解決する: net::ERR_SSL_PROTOCOL_ERROR
-
[解決済み] エラーが発生しました。クライアントに送信された後にヘッダーを設定できない
-
[解決済み] レンダリング後に入力フィールドにフォーカスを設定するには?
-
[解決済み] クライアントサイドとサーバーサイドのプログラミングの違いは何ですか?
-
[解決済み] Node.js上のクライアント。Uncaught ReferenceError: require は定義されていません。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Vueの要素ツリーコントロールに破線を追加する説明
-
jsを使った簡単な照明スイッチのコード
-
vueのプロジェクトでモックを使用する方法を知っていますか?
-
Vueのイベント処理とイベントモディファイアの解説
-
[解決済み】Node.js Error: Cannot find module express
-
[解決済み】React Uncaught Error: 対象コンテナが DOM 要素でない [重複]。
-
[解決済み】エラー。Ionic使用中にモジュール '../lib/utils/unsupported.js' が見つかりませんでした。
-
[解決済み】<select>で現在選択されている<option>をJavaScriptで取得するにはどうすればよいですか?
-
[解決済み】「.addEventListener is not a function」なぜこのエラーが発生するのか?
-
フロントエンド非同期(アシンク)ソリューション(全ソリューション)