Nuxt のレンダリングモードについて (Server-Side Rendering)
● Client-Side Rendering の課題を解決する
● Server は完全にレンダリングされた HTML をブラウザに返す
Server-Side Rendering(Universal Rendering)
Slide 14
Slide 14 text
Nuxt のレンダリングモードについて (Server-Side Rendering)
Browser Server
GET /
GET /bundle.js
Hydration
HTML
JS
レンダリング済みの HTML
をダウンロードする
JS をダウンロードする
Hydration される
Render
Slide 15
Slide 15 text
Nuxt のレンダリングモードについて (Server-Side Rendering)
● Server から受け取った HTML を Interactive にする
○ Server から受け取った HTML はイベントリスナがセット
されていない
○ イベントリスナをセットする作業が Hydration
Hydration とは
作って学ぶ Nuxt Server Components
Nuxt Server Components の流れ
(Server-Side Rendering の場合)
Slide 50
Slide 50 text
作って学ぶ Nuxt Server Components
Browser Server
GET /
GET /bundle.js
Hydration
HTML
JS
Render
GET /__nuxt_island
Render component
HTML
Not Hydrated
Slide 51
Slide 51 text
作って学ぶ Nuxt Server Components
Browser Server
GET /
GET /bundle.js
Hydration
HTML
JS
Render
GET /__nuxt_island
Render component
HTML
Not Hydrated
従来のレンダリングとの差分
Slide 52
Slide 52 text
作って学ぶ Nuxt Server Components
Nuxt Server Components の構成要素
● Vue コンポーネントをレンダリングするエンドポイント
● Server で Vue コンポーネントをレンダリングする処理
● Vue コンポーネントをレンダリングするエンドポイントへリクエストを投げる
コンポーネント
Slide 53
Slide 53 text
作って学ぶ Nuxt Server Components
Nuxt Server Components の構成要素
● Vue コンポーネントをレンダリングするエンドポイント 👈 まずはここ
● Server で Vue コンポーネントをレンダリングする処理
● Vue コンポーネントをレンダリングするエンドポイントへリクエストを投げる
コンポーネント
Slide 54
Slide 54 text
作って学ぶ Nuxt Server Components
Browser Server
GET /
GET /bundle.js
Hydration
HTML
JS
Render
GET /__nuxt_island
Render component
HTML
Not Hydrated
ここ
作って学ぶ Nuxt Server Components
Teleport 部分をわかりやすいように書くと以下のようなコードになる
これを Server Side でレンダリングするとどうなるかが重要
Slide 85
Slide 85 text
作って学ぶ Nuxt Server Components
● コンポーネントにあるテンプレートの一部を、そのコンポー
ネントの DOM 階層の外側に存在する DOM ノードに「テレ
ポート」できる組み込みコンポーネント
● https://ja.vuejs.org/guide/built-ins/teleport.html
Teleport
Slide 86
Slide 86 text
作って学ぶ Nuxt Server Components
v-if が true になったとき body 要素に挿入される