質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

2428閲覧

Nuxt+laravelでSSR(サーバーサイドレンダリング)を実装したときの原理を教えてほしい。

退会済みユーザー

退会済みユーザー

総合スコア0

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

1グッド

2クリップ

投稿2022/03/30 05:09

SSRでは、サーバー側でレンダリングした結果のHTMLデータをクライアント側に返すそうですね。
「レンダリング」とは、JSを実行・解釈してDOMに反映させることだと認識しており、DOMに反映されたHTMLデータをまるごとクライアントに返すのがSSRだと認識しています。

Nuxtの初期設定時、サーバーをexpressにしていると、確かnuxtのプロジェクト内にサーバーのソースが置かれると思うのですが、そのケースであれば、上記で記述したSSRの原理は納得できます。

フロントもバックも同じjsであり、同一のプロジェクト内なら、サーバーサイド側もnuxtのソースを共有していると思うので、express側でnuxtのpagesやcomponentsのjsを解釈してクライアントに返すことが可能だと思います。

しかし、サーバーサイドがPHPのときはどういう動作になるのですか?
nginx+Laravel+Nuxtそれぞれ3つのコンテナでdocker環境で構築されたSSRのシステムの開発に携わってるんですが、このケースではどういう原理でサーバーサイドレンダリングが実現されているのでしょうか?
そもそも前提知識が間違っていたりとかしたらご指摘ください。

uky👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

「レンダリング」とは、JSを実行・解釈してDOMに反映させることだと認識しており、DOMに反映されたHTMLデータをまるごとクライアントに返すのがSSRだと認識しています。

上記のご認識の通りで、サーバ側でJSを実行してHTMLを生成・返却します。

サーバサイドがLaravelの場合、Axios等を利用してNuxtからLaravelのAPIを呼び出す処理を記載することになります。SSRではこのAPI呼び出し処理までサーバ側で実行し、HTMLを生成・返却します。

例えば、Laravel APIのエンドポイントホスト名が api.example.com, SPAのホスト名が example.com であり、ユーザがPost ID=1のデータを照会するページ example.com/posts/1 にアクセスした際の処理の流れは以下の通りになります。

  1. ユーザからexample.com/posts/1 にHTTPリクエストが送られる。
  2. サーバ側(Node.js)でJSを実行する。このとき、Post ID=1のデータを取得するため、Node.jsはapi.example.com/posts/1 にHTTPリクエストを送る。
  3. Laravel APIサーバが api.example.com/posts/1 のリクエストを受け取り、Post ID=1のデータを返却する。
  4. Node.jsは取得したPost ID=1のデータを利用してHTMLを生成し、ユーザに返却する

これらの処理の中で、リクエストのホスト名が api.example.com だった場合には Laravel APIサーバに、example.comだった場合には Node.js にリクエストを振り分ける役割を果たすのがWebサーバ(Nginx)となります。

今回はホスト名でAPIサーバとNode.jsを振り分けましたが、パスで振り分けるパターンもあります。
例: example.com/api/* の場合、APIサーバに振り分け、それ以外の場合はNode.js

投稿2022/03/31 16:23

ryoluo

総合スコア134

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問