P粉3365367062023-08-26 09:55:40
You can translate the above content into Chinese:
<p>您可以将上下文对象传递给renderToString
函数</p> <pre><code>const context = { data: 'Hello world' } // 您想要共享的数据 const html = renderToString(App, context) </code></pre> <p>在Vue组件中,可以使用useSSRContext
来访问此对象</p> <pre><code>setup() { if (typeof window === 'undefined') { const context = useSSRContext() console.log(context.data) // Hello world } } </code></pre> <p>与Vue 2不同,您无需在<div id="app">
中添加data-server-rendered="true"
,当您在浏览器上使用createSSRApp
而不是createApp
时,Vue 3会自动进行客户端渲染</p> <hr /> <p>要在浏览器中传递对象,您需要在从服务器返回结果时将其写入<head>
中的window变量中</p> <pre><code>const html = renderToString(App, context) res.send(` <html> <head> <script>window.context = ${JSON.stringify(JSON.stringify(context))}</script> </head> <body><div id="app">${html}</div></body> <script src="main.js"></script> </html> `) </code></pre>