47

私が Web 開発を始めたとき、Javascript のイベント名はすべて小文字で区切られていないことに気付きました。つまり、 "mousedown""mouseup"などです。また、jQuery UI ライブラリを操作しているとき、それらも同じ規則を使用していることに気付きました。つまり、次の例のように「dropdeactivate」

$( ".selector" ).on( "dropdeactivate", function( event, ui ) {} )

これは 2 語または 3 語しかない名前には適していますが、それ以上の単語が含まれる名前には非常に適していません。

それにもかかわらず、私が作成したカスタム (合成) イベントを起動する必要があるときも、その規則に従いました。今は"drop:deactivate""app:ready"のようなものを使用しています。

iOS Apple は最近、HTML 5 Airplay API 用にこのイベントを追加しました。私は、この投稿http://www.mobilexweb.com/blog/safari-ios7-html5-problems-apis-reviewの作成者が次のように述べていることに同意します。

「webkitcurrentplaybacktargetiswirelesschanged」は、これまでで最も長い JavaScript イベント名という記録を獲得したと思います。

この奇妙な慣習の背後にある理由は何ですか? より読みやすい方法でイベントに名前を付けるために、何らかの形式の区切り文字またはキャメルケース規則を使用しないのはなぜですか?

それには理由があると思います。多くの賢い人々がこれに取り組んできました...しかし、しばらくすると、なぜだろうと思いますか?

4

4 に答える 4

8

私が知る限り、その主題に関する公式の慣行はありません。キャメルケースはjsの名前の一般的に受け入れられている標準であるため、イベントの命名にも同じことが当てはまるようです。ただし、ご指摘のとおり、js 自体と多くのライブラリは別の方法をとっています。私は偉大なプログラマーが使用する両方の規則を見てきました。「これまでで最も長い JavaScript イベント名」の場合、私の意見では、これはキャメルケースを使用するべきだったイベントの好例です...または、単に短くしただけかもしれません :)

より頻繁に見たものに固執したい場合は、小文字を使用してください。それが目に難しいと思うなら (私はそう思います)、camelCase を使用してください。標準に準拠しようとしている場合は、おそらく他に何も使用しないでしょう。

于 2013-09-28T21:11:44.250 に答える
5

Bootstrap の仕組みが気に入っています。 hidden.bs.modal

ただし: @raina77ow の回答で述べたように、DOM2 仕様に従う必要があります。

仕様では、次の XML 命名ガイドラインについて言及しています: https://www.w3.org/TR/1998/REC-xml-19980210#NT-Name

私が集めたものから:

  • 可能であれば小文字を使用してください
  • これらの文字のいずれかを使用して名前空間を支援できます . - _ :
  • 私はこれらのいずれかを使用します。おそらくこのようにapporlibraryname:componentname.eventtype

彼の理由は、完全に独立したウィジェットになる可能性のある個別のアプリやライブラリがある場合があるためです。ほとんどのコンポーネントはオブジェクトとして記述されているため: 、コンポーネントが a の前にあるため、この事のイベントがどこにあるのかを一目で簡単に識別できます。.

于 2020-05-06T17:41:45.027 に答える
1

規約に関しては、何らかの形で、習慣として、JavaScript フレームワークは JavaScript DOM イベント API の規約に従っているようです。理由があるのか​​、少なくとも明確な理由があるのか​​ はわかりませんが、それはただです。一般的な慣習については、クロックフォードが最も優れた参考文献の1つですが、イベントの命名については言及されていませんが、同時にここでのイベントは少し異なるようで、選択の問題として考えさせられました.それ以上でもそれ以下でもない

于 2013-09-28T21:12:21.987 に答える