コンポーネントで構成されるサイトを構築しています。HTMLとCSSおよびjQueryの特定のセットとして定義されたコンポーネント。サイトの各ページは、多くのコンポーネントで構成されます。
ベストプラクティスに従って、JavaScriptブロックをページの下部に配置しています。必要な.jsファイルをロードしてから、必要な関数を呼び出すことを計画しています。
doThisThing();
doThatThing();
コンポーネントXがあるとします。そのコンポーネントがレンダリングされたページに表示されるたびに、関数を呼び出したいと思います。jQueryの観点から、これを処理する理想的な方法は何でしょうか?いくつかのオプション:
1)コンポーネントがページ上にあるかどうかに関係なく、常に関数を呼び出します。
$('.componentX').doYourThing()
これは簡単です。jQuery関数呼び出しのユニバーサルブロックを1つだけ持つことができるからです。ただし、DOMを検索して、そこにない可能性のあるものを探しているため、パフォーマンスがわずかに低下します。
2)コンポーネント自体に呼び出しを添付します。
<div id="componentX">my component</div>
<script>$('.componentX').doYourThing()</script>
これは、同じコンポーネントにマークアップと.js呼び出しが含まれているので便利です。欠点?
3)コンポーネントアーキテクチャをバックエンドシステムと統合して、.jsブロック内のコンポーネントのインスタンス化を可能にします。つまり、コンポーネントがページテンプレートに配置されているかどうかを確認し、配置されている場合は、依存するjs関数呼び出しをメインスクリプトブロックに追加します。
4)私が考慮すべき他のオプション?
アップデート:
ケンプの答えに基づいて、私は少し明確にすべきだと思いました。すべてのjQuery関数は1つの大きな圧縮された.jsファイルにラップされるため、サーバーヒットに関してはすべて同じです。個々のページテンプレートのコンテキストで、ページ上の各コンポーネントのすべての個々の関数呼び出しを最適に処理する方法にもっと興味があります。
たとえば、コンポーネントXはすべてのページの90%で使用される可能性があります。そのため、他の10%のページに対してjquery関数を呼び出すことは、大したことではないようです。
ただし、コンポーネントYは、すべてのページの5%でのみ使用される可能性があります。95%の確率で、すべてのページでjquery関数を呼び出したくないと思います。これは不要です。
さらに複雑になる可能性のある別のシナリオ:コンポーネントZは、すべてのページの100%で1回使用されますが、5%のページで2回使用される場合があります。