説明
設計上、ほとんどのjqueryコードは多くの密結合につながります。たとえば、セレクターはhtmlの特定の構造を想定しています。
var mySubnav = $("#navigation a.sub-menu");
対応するhtmlが変更された場合、何らかの理由で、
<a class="subMenu" .... </a>
機能が壊れています。
質問
- 密結合を処理するための最良の方法は何ですか?
- それを緩めるためにどのようなアプローチがありますか?
回答、アプローチ
- htmlカスタムデータ属性を使用して、cssをjsロジックから分離します。
data-submenu="true"
たとえば、htmlを追加しvar mySubnav = $("[data-submenu]");
、js側で使用します。 - 堅実なテスト環境を実装する
- 最も具体性の低いセレクターを使用して、可能な限り緩く結合し
$("a.sub-menu')
ます。も参照してください - (1)静的DOM要素への参照を事前に取得し、(2)セレクター文字列を1つの場所(コードの上部)に格納することにより、jQueryコードの本体からCSSセレクターを表す実際の文字列リテラルを削除します。
- ビューを介してJavaScriptをDOMから分離するBackboneなどのJavaScriptフレームワークを使用します
- イベント管理によるカップリングに関してデリゲートとライブを使用する