より大きなドキュメントを構築するためのテンプレートとして機能する 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>
ご覧のとおり、コストのかかる検索を 1 回だけ実行することを期待して、このテンプレート内の特定のノードをキャッシュします。(テンプレートの基準が厳しいため、この状況では XPath は使用できません。)
上記のテンプレートは、次のようなドキュメントに追加されます。
<store>
<genre>
<computing>
// Insert here
</computing>
<nature>
// Again here
</nature>
</genre>
</store>
基本的に、どこにでも挿入できます。解決方法がわからない問題は、appendChild
や などのメソッドを使用してテンプレートが挿入された後、キャッシュ ポイントを保持またはすばやく更新する方法insertBefore
です。私が見ることができる唯一の解決策は、挿入されたノードを再検索することですが、前述のように、これにはコストがかかり、最初の検索を支援した特定のタグが削除されます。
dom を反復し、特定のハンドラーでアクションを実行することで、任意のテンプレート エンジンに似た挿入ポイントを見つけます。{{book}}
上記のテンプレートを挿入するように要求します。
キャッシュは単純な の配列ですDomNode
が、より優れたクロス ドキュメント メソッドがあれば、これは簡単に変更できます。同様のものを実装したコードへの提案やポインタを受け入れます。