0

好的,这个问题可能揭示了对经典 HTML/javascript 组合的基础知识的误解,但这里有......

假设我有一个(相对)简单的应用程序,它利用同构 Javascript 的概念,首先在服务器端呈现,然后由浏览器呈现。例如,这个:

https://github.com/jesstelford/react-isomorphic-boilerplate

该应用程序首先呈现以下服务器端(通过 res.send()):

<!doctype html>
<html lang="">
  <body>
    <div id="content">{{{content}}}</div>
    <script src="js/bundle.js"></script>
  </body>
</html>

内容胡须包含一些 React 代码。

然后,浏览器会在 script 标签中选择经过浏览器化的包(其中包含完全相同的 React 代码)。React 显然看到状态没有变化,因此不会重新渲染 DOM。页面加载速度很快,用户不会看到任何变化(没有闪烁)。

不过,这是我的问题:为什么渲染的 DOM 元素只出现一次?

鉴于它在上面的 HTML 中出现了两次(在 div 行和 script 行中),我原以为你会看到它两次。相反,浏览器的版本只是替换了服务器渲染的版本。这显然是一个非常有用的效果,但如果有人能向我解释为什么事情会这样运作,我将不胜感激。

谢谢

4

0 回答 0