2011-12-05 9 views
37

目立たないと目立たないjavascriptの違いは何ですか?簡潔さに感謝します。短い例も感謝しています。目障りなJavaScriptと目立たないjavascriptの違い

+0

[なぜHTMLでonClick()を使用するのが悪いのですか?](http://stackoverflow.com/questions/5871640/why-is-using-onclick-in-html-a-bad-practice ) –

+0

1つ(「目立たない」)は、要素にビヘイビアを適用する古いスタイル(DOM 0)です。もう1つ(「邪魔にならない」)は、John Resig(jQueryの名声)によって促進されたスタイルです。どちらも受け入れ可能です –

答えて

32

懸念の分離。あなたのHTMLとCSSはあなたのJSコードに縛られていません。あなたのJSコードは、いくつかのHTML要素にインラインではありません。あなたのコードには、すべてのものに対して大きな機能(または機能以外)がありません。あなたには、簡潔で簡潔な機能があります。

モジュラー。 これは問題を正しく分離したときに発生します。たとえば、あなたのすばらしいキャンバスアニメーションは、ボックスを描画するためにベクトルがどのように動作するかを知る必要はありません。

JavaScriptがインストールされていないか、最新のブラウザを実行していない場合は、人を殺さないでください。経験を正常に低下させる可能性があります。

小さいものだけをする必要があるときは、ごみの山を作りません。人々は、DOM要素を再選択し、セマンティックHTMLを拾ってその中の番号付きIDを投げたり、ドキュメントモデルやその他の技術を理解していないために起きる奇妙なことを無限に複雑にします。 「マジック」抽象レイヤーはすべてをゴミ速度にまで下げ、オーバーヘッドの山をもたらす。

+0

「ゴミの山を築かないでください」 - 小さな事例やデモンストレーションをお願いしますか? – Abdul

+1

'onkeypress =" someFilter(); "というようなものを各テキストフィールドに個別に追加するか、jQueryを使うのではなくHTMLに混ぜて、複数のセレクタを使って一気に処理しますか? – Abdul

23

マークアップではありませんJavascriptを控えめです:目障り

<div id="informationHeader">Information</div> 

:HTMLとJavaScript(外部JavaScriptファイルで、あなたのJavaScriptを定義する)

  • 優雅な劣化の

    <div onclick="alert('obstrusive')">Information</div> 
    
  • +7

    これはプログラマの視点からのものです:あなたはすべてを別々のJSスクリプトファイルに入れて、まだユーザに非常に妨げになるサイトを持っている可能性があります。 – nnnnnn

    +0

    @nnnnnn StackOverflowはプログラマのためのウェブサイトです。 – crmpicco

    +0

    @crmpicco - はい、わかります。私の指摘は、「邪魔されないJavascript」のコンセプトは、プログラマへの影響よりも、ユーザへの影響に関することです。ユーザーは、JSがHTMLに混在しているかどうかは気にしません。サイトがブラウザで動作するかどうかは気になります。 – nnnnnn

    8
    1. 分離(重要:の部分はまだJavaScriptが無効になっています)。

    長引く説明のために、件名のWikipedia pageをチェックアウトしてください。

    +0

    インラインDOM 0ハンドラを使用している間も、ページは正しく正常に劣化する可能性があります。 –

    +0

    @MattMcDonald:私は彼らができないと言っているわけではありませんか?しかし、その後、HTMLとJavaScriptの分離の原則を破ります。 – Matt

    +0

    あなたの答えはより明確になる必要があります。 –

    2

    マイクの答えを拡大するには:UJSの動作を使用するのが「後で」追加されます。

    <div id="info">Information</div> 
    
    ... etc ... 
    
    // In an included JS file etc, jQueryish. 
    $(function() { 
        $("#info").click(function() { alert("unobtrusive!"); } 
    }); 
    

    UJSはまた、例えば、他の手段は、おそらく同等のリンクを提供することで、#infoクリック機能に到達するために(私のお気に入りの一種)穏やか劣化を意味し得ます。言い換えれば、JavaScriptがない場合、またはスクリーンリーダーなどを使用している場合はどうなりますか。

    +1

    jQueryはJavaScriptに邪魔になると考えています。静的なHTMLには、ダイナミックに生成されたDOM内に同じイベントが存在するため、そこにイベントが表示されます。 – austincheney

    +0

    @austincheneyそれは特にjQueryとは関係がありません。 UJSはフレームワークに中立です。 –

    0

    控えめな - 「目障りではなく、目立たない、非懐疑的な、または怠惰な」。

    obtrusive - 「他人に自分や意見をつけることなどで、落ちつくような処分をしている、または示している。「

    出過ぎる - 『だから

    』特に令状や招待状なしで(何か)前方または人物の際に、推力に、自分の意見を課すことの話すが​​、私の意見では控えめなJavaScriptを最も重要な部分でありますそのは、ユーザーの視点からはです。つまり、ブラウザの設定でJavaScriptがオフになっていれば、サイトは動作します。JavaScriptをオンまたはオフにしても、サイトには引き続きアクセスできますスクリーンリーダー、キーボードとマウスなし、その他のアクセシビリティツールなどがありますが、おそらくそのサイトはそのようなユーザーにとっては「派手」ではないかもしれませんが、それでも機能するでしょう。

    用語「プログレッシブエンハンスメント」では、サイトのコア機能は、どのようにアクセスしても誰にとっても機能します。次に、JavaScriptとCSSが有効なユーザー(ほとんどのユーザー)は、よりインタラクティブな要素でそれを拡張します。

    もう一つの重要な「邪魔されない」要素は、「懸念の分離」です。プログラマが気にするものではなく、ユーザの経験に邪魔されないようにすることができます。プログラマの観点からは、インラインスクリプトを避けて、マークアップをもっときれいに保ちやすくする傾向があります。多くのインラインイベントハンドラに散在していないスクリプトをデバッグする方が一般にはるかに簡単です。

    関連する問題