Nuxt.jsの3つのモード(SSR、SPA、プリレンダリング)のメリットとデメリットについて

Vue.js

Nuxt.jsの3つのモード(SSR、SPA、プリレンダリング)のメリットとデメリットについて紹介します。

Nuxt.jsで作れるもの

Nuxt.jsでは、次のモードを選択できます。
  • Universal App(SSR)
  • Single Page App(SPA)
  • Static App(プリレンダリング)

SSR、SPA、プリレンダリングの違い

Universal App(SSR)

Universal App(SSR)は、ファーストビューが動的にサーバーサイドでレンダリングされます。 最初のロードが完了したら、その後はSPAと同じです。 メリットとしては、
  • SEO的なメリットがある
  • 初回読み込みもページ表示も早い
  • 通信環境に左右されにくい
デメリットとしては、
  • サーバー側に負担が増える
また、注意点としては、フロントエンドでのエラーハンドリングが重要になります。 そして、デメリットというほどでもありませんが、Node.jsのサーバーが必要になります。

Single Page App(SPA)

Single Page App(SPA)は、通常のVue.jsのアプリと同じです。最初のロード後にアプリがスタートするシングルページのみのアプリケーションです。 クライアントサイドでレンダリングされて、クローラーがその処理を待たないため、SEOでは不利になります。 通常のVue.jsと同じではありますが、Nuxt.jsのディレクトリ構造のメリットを活かすことができます。 メリットとしては、
  • 2回目以降の表示速度が早い
デメリットとしては、
  • 初回の読み込みが遅い
  • SEO的に不利
初回はJavaScriptのコードがどうしても増えるので読み込みに時間がかかります。 ただし、2回目以降は差分のデータをHTTPリクエストで要求するだけで、サーバーからのレスポンスもjsonデータで軽いです。

Static App(プリレンダリング)

Static App(プリレンダリング)は、ビルドのときにページごとのhtmlファイルを生成します。 SSRとの違いは、SSRはクライアントからリクエストがあったときにサーバーを使用してhtmlを生成するのに対し、Static Appのプリレンダリングは、ビルド時にhtmlファイルを生成します。 メリットとしては
  • 表示が高速
  • Node.jsが動作するサーバーも不要
  • SEO的にメリットあり
デメリットとしては
  • ページ数が多いアプリには向かない
ページ数が大量にあるとhtmlファイルがそれだけ生成する必要があるので、向いていません。

Vue.js

Posted by devsakaso