好吧,这个问题可能会揭示对经典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行和脚本行中),我原以为你会看到它两次 . 相反,浏览器的版本只是替换服务器呈现的版本 . 这显然是一个非常有用的效果,但如果有人可以向我解释为什么事情会这样运作,我会很感激 .
谢谢