Upgrade to Pro — share decks privately, control downloads, hide ads and more …

v-tokyo #13 6月16日

Avatar for James James
June 16, 2021

v-tokyo #13 6月16日

ViteでStatic Site Generatorの事例について

Avatar for James

James

June 16, 2021
Tweet

Other Decks in Programming

Transcript

  1. 紹介ページ Architecture (after) ユーザー(利用店舗)が店舗の情報を自分で編集 紹介ページを更新する API Server がLambda(Vite のSSG) を実行する

    Lambda の実行の内容 html をrender する script を削除する Client Side Hydration のfragment 削除する 生成した結果をS3 に保存
  2. Vite のSSR `main.js` にLambda のイベントデータを渡す NodeJs の環境でrequire のimport が必須 `provide/inject`

    で `App.vue` に参照できるようにする Vite dev の場合はES6 のimport で良い https://Vitejs.dev/guide/ssr.html 開発時点 v1.0.0-rc13 ` ` export const createApp = (context) => { // main.js if (isSSR) { const app = createSSRApp(App); app.provide('subdomain', context.subdomain); // ... return app; } else { const app = createClientApp(App); app.provide('subdomain', context.subdomain);   return app; } } if(!isSSR) { createApp(context).mount('#app'); }
  3. Vite のSSR からSSG Lambda の入り口 先の `main.js` の createApp SSR

    のコンテンツ 正規表現で必要ないものを削除する 開発時点 v1.0.0-rc13 ` ` exports.handler = async (event) => { const renderer = require('@vue/server-renderer'); const { createApp } = require('ssr/_assets/index.js'); const app = createApp(event); const content = await renderer.renderToString(app); content.replace(/<!--[\[-\]]-->/g, ''); // js script を削除する // S3 にupload }