[ Home ]
back

Vite + SSR Svelte お試しメモ

id: 49, 2024-08-07

概要:

Vite + SSR Svelteメモです。

  • vite記事を参考に、SSR Svelte 構築する内容となります。
  • テストは、stackblitz.com で確認しました。
  • 今回は。紹介記事的な内容になります 。何も作成しないので、調査内容メモとなります

[ 作成日: 2024/05/10 ]


環境

  • Vite 5.2
  • Svelte 4.2
  • express.js
  • typescript 5.4

関連


  • 上記の、template-ssr-svelte , SSR Svelteでした。
  • server.js
  • dev起動で、createServerを使用する
  • express.jsで、ルーティング、 .svelteファイルを読込む。
  • src/entry-server.ts , renderで、レンダリング
  • render経由で、App.svelte 読込み、レスポンス出力する。
app.use("*", async (req, res) => {
  try {
    const url = req.originalUrl.replace(base, "")

    let template
    let render
    if (!isProduction) {
      // Always read fresh template in development
      template = await fs.readFile("./index.html", "utf-8")
      template = await vite.transformIndexHtml(url, template)
      render = (await vite.ssrLoadModule("/src/entry-server.ts")).render
    } else {
      template = templateHtml
      render = (await import("./dist/server/entry-server.js")).render
    }

    const rendered = await render(url, ssrManifest)

    const html = template
      .replace(`<!--app-head-->`, rendered.head ?? "")
      .replace(`<!--app-html-->`, rendered.html ?? "")

    res.status(200).set({ "Content-Type": "text/html" }).send(html)
  } catch (e) {
    vite?.ssrFixStacktrace(e)
    console.log(e.stack)
    res.status(500).end(e.stack)
  }
})