为什么服务端渲染的内容被vue替换了
Why is the server side rendered content replaced by vue
我有一个简单的 index.html 文件,其中包含以下 vue 挂载点:
<div id="server-rendered-test" server-rendered="true">server</div>
如您所见,我假装服务器已经渲染了模板。在我的 main.js 中,我有以下代码来挂载 vue:
const serverRenderedTest = new Vue({
el: '#server-rendered-test',
data: {
text: 'client'
},
template: '<div id="server-rendered-test">{{ text }}</div>'
});
我希望 vue "hydrate" 现有的 DOM,但事实并非如此,因为最终结果(vue 启动后)是:
<div id="server-rendered-test">client</div>
我错过了什么?
Hydration 意味着 Vue 将尝试使用现有的服务器渲染元素而不是创建新元素(参见解释 here)。因此,在您的情况下,它将找到已经呈现的 div#server-rendered-test
并用新数据替换其中的文本。
您没有遗漏任何东西,这是预期的行为。
我有一个简单的 index.html 文件,其中包含以下 vue 挂载点:
<div id="server-rendered-test" server-rendered="true">server</div>
如您所见,我假装服务器已经渲染了模板。在我的 main.js 中,我有以下代码来挂载 vue:
const serverRenderedTest = new Vue({
el: '#server-rendered-test',
data: {
text: 'client'
},
template: '<div id="server-rendered-test">{{ text }}</div>'
});
我希望 vue "hydrate" 现有的 DOM,但事实并非如此,因为最终结果(vue 启动后)是:
<div id="server-rendered-test">client</div>
我错过了什么?
Hydration 意味着 Vue 将尝试使用现有的服务器渲染元素而不是创建新元素(参见解释 here)。因此,在您的情况下,它将找到已经呈现的 div#server-rendered-test
并用新数据替换其中的文本。
您没有遗漏任何东西,这是预期的行为。