將標題重寫為:在Vue 3中,如何使用SSR將資料從Node.js傳遞
P粉078945182
P粉078945182 2023-08-25 18:42:30
0
1
619
<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>
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板