【发布时间】:2014-07-25 16:37:55
【问题描述】:
我有以下问题:
有一个网络应用程序,我需要在数据更改时定期更新用户界面。数据由具有不同属性的项目列表组成。因为这些项目的 UI 表示可能很复杂,所以我使用 JS 模板来呈现它们。当它们发生变化时,我只需在 DOM 中将它们替换为代表其更新状态的 HTML。
这种方法很简单,但有几个问题:
- 您需要重新附加所有事件处理程序,因为您实际上替换了元素
- 重新加载资源时有闪烁效果(大概可以使用文档片段解决)
- 如果内容经常更改,则无法使用开发人员工具(检查器),因为所有元素都被替换了
所以我想知道是否有 that many 的任何 JS 模板引擎可以处理这种情况。我正在考虑一种功能,它可以智能地匹配新渲染元素和旧渲染元素,并且仅在内容真正发生变化时才更改内容。
我在想这样的事情:
旧 HTML
<div>
<h1>TV</h1>
<span>$250</span>
<a href="addtocart?id=123">Add to cart</a>
</div>
新 HTML
<div>
<h1>TV</h1>
<span>$260</span>
<a href="addtocart?id=123">Add to cart</a>
</div>
模板引擎在原始 DOM 中找到 <span> 并替换其更改的值,但其余元素保持不变。
【问题讨论】:
标签: javascript templates