我有一个 DOM 结构,它充当构建更大文档的模板。模板看起来像这样(过于简单的示例)
<book> // $cache[0]
<data></data>
<author></author> // $cache[1]
<published>
<company></company> // $cache[3]
<date></date>
</published>
<blurb></blurb>
<related></related> // $cache[2]
</book>
如您所见,我在此模板中缓存了某些节点,希望只进行一次昂贵的搜索。(由于模板的严格标准,XPath 在这种情况下无法使用。)
上面的模板将被添加到如下所示的文档中:
<store>
<genre>
<computing>
// Insert here
</computing>
<nature>
// Again here
</nature>
</genre>
</store>
基本上,它可以插入任何地方。我不知道如何解决的问题是如何在使用 和 之类的方法插入模板后保留或快速更新缓存appendChild
点insertBefore
。我能看到的唯一解决方案是重新搜索插入的节点,但就像我提到的那样,这很昂贵,并且有助于第一次搜索的某些标签将被删除。
我发现插入点类似于任何模板引擎,通过迭代 dom 并在某些处理程序上执行操作,例如。{{book}}
将请求插入上述模板。
缓存只是一个DomNode
s 数组,但如果有更好的跨文档方法,则可以轻松更改。我对实现类似代码的建议或指针持开放态度。