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