Vue3 createSSRApp()関数の詳細
createSSRApp()は、サーバーサイドレンダリング(SSR, Server-Side Rendering)専用の関数です。
createSSRApp()サーバーサイドでHTMLコンテンツを生成することで、ページの初回読み込み速度とSEO効果を向上させます。
とcreateApp()と比較して、createSSRApp()は、サーバーサイドレンダリングが必要なアプリケーションシナリオにより適しています。
1. サーバーサイドレンダリング(SSR)とは?
サーバーサイドレンダリング(SSR)とは、サーバー上でHTMLを生成し、生成したHTMLをクライアントに送信して表示するプロセスです。従来のクライアントサイドレンダリング(CSR, Client-Side Rendering)とは異なり、SSRはページの初回読み込み速度を向上させ、検索エンジン最適化(SEO)を改善するのに役立ちます。
クライアントサイドレンダリングでは、ブラウザはまず空のHTMLファイルをダウンロードし、JavaScriptでページコンテンツを動的に生成します。一方、サーバーサイドレンダリングでは、サーバーがすでに完全なHTMLコンテンツを生成しているため、ブラウザはそのコンテンツを表示するだけで済みます。
2. createSSRApp()の役割
Vue.js 3では、createApp()は、クライアントVueアプリケーションを作成するための標準関数です。一方、createSSRApp()は、createApp()の変種であり、サーバーサイドレンダリングをサポートするVueアプリケーションを作成するために特別に使用されます。
createSSRApp()の主な役割は、サーバーサイドでVueアプリケーションのHTMLコンテンツを生成し、それをクライアントに送信することです。これにより、Vueアプリケーションのサーバーサイドとクライアントサイドの一貫性が保証され、クライアントとサーバーサイドのレンダリング結果の不一致の問題を回避できます。
3. 使用createSSRApp()アプリケーションの作成
使用createSSRApp()Vueアプリケーションを作成する手順と、使用createApp()似ていますが、SSRに関連するいくつかの設定に特に注意する必要があります。
3.1 基本的な使い方
例
import { createSSRApp } from 'vue';
// 导入根组件
import App from './App.vue';
// 创建SSR应用
const app = createSSRApp(App);
// 挂载应用
app.mount('#app');
この例では、...を使用してcreateSSRApp()サーバーサイドレンダリングをサポートするVueアプリケーションを作成し、指定されたDOM要素にマウントしました。
3.2 サーバーサイドとクライアントサイドの違い
サーバーサイドとクライアントサイドでは、createSSRApp()の動作は異なります:
- サーバーサイド:サーバーサイドでは、
createSSRApp()VueアプリケーションのHTMLコンテンツを生成し、それをクライアントに送信します。 - クライアントサイド:クライアントサイドでは、
createSSRApp()サーバーが生成したHTMLコンテンツを引き継ぎ、それをインタラクティブなVueアプリケーションとしてアクティベートします。
3.3 SSRアプリケーションの設定
SSRアプリケーションを設定する際は、以下の点に注意する必要があります:
- サーバーサイドでクライアント専用のAPIを使用しない:例えば、
window或documentオブジェクトはサーバーサイドでは使用できません。 - 使用
onServerPrefetchフック:サーバーサイドレンダリング時には、...を使用できます。onServerPrefetchフックを使用して事前にデータを取得できます。
例
async onServerPrefetch() {
// サーバーサイドでデータを事前に取得する
this.data = await fetchData();
}
};
4. createSSRApp()とcreateApp()の違い
| 特性 | createApp() |
createSSRApp() |
|---|---|---|
| レンダリング環境 | クライアントサイドレンダリング(CSR) | サーバーサイドレンダリング(SSR) |
| 初回読み込み速度 | 遅く、クライアントのJavaScript実行に依存する | 速く、サーバーがHTMLを生成済み |
| SEO | 悪く、検索エンジンが動的コンテンツをクロールしにくい | 良く、検索エンジンが完全なHTMLをクロールできる |
| 適用シーン | シングルページアプリケーション(SPA) | SEOと高速読み込みが必要なアプリケーション |
その他の拡張
Vue3 グローバルAPI