梗概
- 调用 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)
}
})