私がますます目にする現象は、要素の種類や UI パターンに結び付けられるのではなく、特定のページの特定の要素に結び付けられる Javascript コードです。
たとえば、ページにいくつかのアニメーション メニューがあるとします。
<ul id="top-navigation">
...
</ul>
<!-- ... -->
<ul id="product-list">
...
</ul>
これら 2 つのメニューは、同じページまたは異なるページに存在する可能性があり、一部のページにはメニューがない場合があります。
次のような Javascript コードをよく見かけます (これらの例では、jQuery を使用しています)。
$(document).ready(function() {
$('ul#top-navigation').dropdownMenu();
$('ul#product-selector').dropdownMenu();
});
問題に気づきましたか?
Javascript は、UI パターン自体ではなく、UI パターンの特定のインスタンスに密接に結合されています。
代わりにこれを行う方がはるかに簡単 (かつクリーン) ではないでしょうか? -
$(document).ready(function() {
$('ul.dropdown-menu').dropdownMenu();
});
次に、「dropdown-menu」クラスを次のようにリストに配置できます。
<ul id="top-navigation" class="dropdown-menu">
...
</ul>
<!-- ... -->
<ul id="product-list" class="dropdown-menu">
...
</ul>
この方法には、次の利点があります。
- より単純な Javascript -クラスに1 回アタッチするだけで済みます。
- 特定のページに存在しない可能性のある特定のインスタンスを探すことは避けています。
- 要素を削除すると、その要素のアタッチ コードを見つけるために Javascript を探し回る必要がなくなります。
これに似た手法は、alistapart.com の特定の記事によって開拓されたと思います。
これらの単純な手法がいまだに広く採用されていないことに驚いています。また、UI パターンではなく UI インスタンスを直接参照する「ベスト プラクティス」のコード サンプルや Javascript フレームワークを今でも目にします。
これには何か理由がありますか?今説明した手法に、私が気付いていない大きな欠点はありますか?