将标题重写为:在Vue 3中,如何使用SSR将数据从Node.js传递
P粉078945182
P粉078945182 2023-08-25 18:42:30
0
1
604
<p>我正在使用vue.js 3构建一个网站,我想使用服务器端渲染。我还想能够从我的fastify(或express)服务器传递数据给vue.js 3。有没有办法可以做到这一点(我看到了一个叫做express-vue的东西:github链接,但它是为vue 2而不是官方的,所以我不知道它是否好用)?而且你能否包含客户端的hydration,因为我看到了一些例子,比如https://github.com/moduslabs/vue3-example-ssr,但它不包括客户端的hydration,如果这不可能的话,我会使用ejs,但我更喜欢vue 3。你能给我一个示例或模板吗?提前谢谢!</p>
P粉078945182
P粉078945182

全部回复(1)
P粉336536706

您可以将上述内容翻译成中文:

<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>
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板