Javascript 计算两个DOM节点或jQuery对象之间的最小变更集

Javascript 计算两个DOM节点或jQuery对象之间的最小变更集,javascript,dom,handlebars.js,Javascript,Dom,Handlebars.js,我想计算两个DOM节点或jQuery对象之间的最小变更集 问题是,现在我正在使用手柄更新DOM 调用render方法时,我会执行以下操作: $el.empty().append(handlebarTemplate(model)); 但我只想改变那些改变了的事情。例如字符串或子树被另一个替换,等等 例如,tha模板如下所示: <div> <span>Hi there <a href="#">{{name}}</a>.</span>

我想计算两个DOM节点或jQuery对象之间的最小变更集

问题是,现在我正在使用手柄更新DOM

调用render方法时,我会执行以下操作:

$el.empty().append(handlebarTemplate(model));
但我只想改变那些改变了的事情。例如字符串或子树被另一个替换,等等

例如,tha模板如下所示:

<div>
    <span>Hi there <a href="#">{{name}}</a>.</span>
</div>

你好。
名称
将是
John
,它将更改为
Mary
,我不希望整个
被替换,只希望替换
-节点中的文本


但我不太确定如何做到这一点。有没有开源图书馆可以做这种工作?或者,完成此任务的基本思路是什么?

这可能不值得,比较节点可能比简单地替换所有节点花费更长的时间。你对当前的方法有问题吗?我只是想要一个更稳定的DOM,你知道吗?因为我正在管理很多封装组件,它们都有一个部分DOM,当一些变量更新时,整个DOM部分都会更新。我看到ember.js似乎只替换更改的部分。您是否已经有迹象表明模型数据已更改?有了它,就需要使用
$el.find('span a').html(newName)
。例如,在主干网中,您可以通过让视图侦听特定字段上的模型更改事件来解决这个问题。即使您不想/可以直接使用它,它也会做您想要的事情(计算特定DOM子树的差异,以确定将这些更改应用于DOM的DOM Manipulation的最小数量)。@bfavaretto但是我如何知道编译的Handlebar模板中引用的
名称