梗概

  • 调用 vite-plugin-ssr提供的renderPage方法,给它传入pageContextInit对象
    • 传入的内容主要是客户端访问的URL和请求数据等
  • 该方法会根据传入的参数,根据配置好的路由,进行服务端渲染,并实现混合
  • 最终封装返回
    • 返回的内容包括http响应的所需内容(http 状态码,数据类型,响应体等)

原文链接

vike/boilerplates/boilerplate-vue/server/index.js at main · vikejs/vike · GitHub

实例

精简版

const { renderPage } = require('vite-plugin-ssr')
app.get('*', async (req, res, next) => {
  const pageContextInit = {
    urlOriginal: req.originalUrl,
    headersOriginal: req.headers
  }
  const pageContext = await renderPage(pageContextInit)
  if (pageContext.errorWhileRendering) {
    // Install error tracking here, see https://vike.dev/errors
  }
  const { httpResponse } = pageContext
    const { body, statusCode, headers, earlyHints } = httpResponse
    headers.forEach(([name, value]) => res.setHeader(name, value))
    res.status(statusCode)
    // For HTTP streams use httpResponse.pipe() instead, see https://vike.dev/streaming
    res.send(body)
  }
})