Vue: ssr 意外的水合作用救援

创建于 2017-06-28  ·  4评论  ·  资料来源: vuejs/vue

版本

2.3.4

再生产

F5(重新加载)键上会发生什么:
ssr_pre_tag_issue
(只发生一次,视频循环播放)

重现步骤

在vue-hackernews-2.0 demo的App.vue中添加<pre>标签:

<template>
  <div id="app">
    <header class="header">
    <pre style="background-color: #aaa">
foobar
    </pre>
      <nav class="inner">

什么是预期?

客户端和服务器端的<pre>标签版本相同

实际发生了什么?

客户端和服务端版本不一样,然后救助?,然后<pre>标签内容闪烁

最有用的评论

@FranckFreiburger这似乎是一个错误。 根据规范https://www.w3.org/TR/html5/syntax.html#element -restrictions

可以在 pre 和 textarea 元素的开始标记之后立即放置一个换行符。 如果元素的内容打算以换行符开头,则作者需要包含两个连续的换行符。

紧跟在 pre 标签之后的first换行符被忽略,而 vue html 编译器似乎没有。

我会尝试修复它。

所有4条评论

谢谢@FranckFreiburger ,我尝试在 Mac 和 Windows 上重现该问题,都可以。 你能提供更多信息吗? 而对于F5 key ,你是什么意思,F5 重新加载页面?

Windows 7,节点 v8.1.2,已使用最新的 Google Chrome 和 Firefox 进行测试。
在克隆了 vue-hackernews-2.0 演示之后,我只是修改了App.vue以添加<pre>标签。
然后,我运行npm run dev ,并在第一次加载页面时发生此问题(该问题在页面重新加载时再次发生)

使用谷歌开发工具,
当我在问题发布前暂停脚本执行时,标记(在开发工具的“元素”标签中)为:

<pre style="background-color:#aaa;">foobar
        </pre>

当我继续执行脚本时,标记变为:

<pre style="background-color:#aaa;">
foobar
        </pre>

网络选项卡中的数据似乎正确,初始 HTTP GET 请求包含:

<pre style="background-color:#aaa;">
foobar
        </pre>

注意:问题不会发生在<div style="white-space:pre;">而不是<pre>

谢谢,明白了。 我正在努力研究它。

@FranckFreiburger这似乎是一个错误。 根据规范https://www.w3.org/TR/html5/syntax.html#element -restrictions

可以在 pre 和 textarea 元素的开始标记之后立即放置一个换行符。 如果元素的内容打算以换行符开头,则作者需要包含两个连续的换行符。

紧跟在 pre 标签之后的first换行符被忽略,而 vue html 编译器似乎没有。

我会尝试修复它。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

hiendv picture hiendv  ·  3评论

loki0609 picture loki0609  ·  3评论

robertleeplummerjr picture robertleeplummerjr  ·  3评论

franciscolourenco picture franciscolourenco  ·  3评论

aviggngyv picture aviggngyv  ·  3评论