好吧,这个问题可能会揭示对经典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>

内容mustaches具有一些React代码 .

然后浏览器在脚本标记中拾取浏览器化的包(其中包含完全相同的React代码) . React显然看到状态没有变化,因此不会重新渲染DOM . 页面快速加载,用户将看不到任何更改(无闪烁) .

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

鉴于它在上面的HTML中表示两次(在div行和脚本行中),我原以为你会看到它两次 . 相反,浏览器的版本只是替换服务器呈现的版本 . 这显然是一个非常有用的效果,但如果有人可以向我解释为什么事情会这样运作,我会很感激 .

谢谢