2015-11-01 68 views
14

angularJsディレクティブが定義されている場合は、「camelCase」構文の形式で名前を付ける必要がありますが、使用する場合は「camel-case」という形式で名前を付ける必要があります。これがなぜ必要なのかという疑問です。AngularJsディレクティブの命名規則

私はそれが命名の競合(現在/将来)を避けるためであることを知っていますが、定義中と使用中に異なる名前を付ける必要があるのはなぜですか。それを「ラクダのケース」の形で直接定義することはできませんか?

答えて

21

重要な理由は2つあります。

まず、HTML属性は大文字と小文字が区別されません。つまり、「someName」と「somename」は同じ属性です。したがって、最良のスタイルは、 "kebab-case"表記を使用して属性名の単語を区切ることです。そのため、HTML属性とタグ名に「属性名」構文を使用しています。

一方、ケバブケース名はJavascriptの有効な識別子ではないため、Angularディレクティブなどの名前を使用するには、冗長bracket notationを使用する必要があります。しかし、Javascriptの世界では、camelCaseは変数とオブジェクトのプロパティの名前付けのための標準的なものであるため、Angularはnormalization (see source)を使用してケバブケース名をcamelCaseに変換します。 AngularJSはHTMLで使用するためのインスタンス

<foo-bar-directive> 

または

< ... foo-bar-directive> 

.FORケースをハイフンするキャメルケースディレクティブの名前を変換しているため

+0

ありがとう、dfsq。意味をなさない! – Parashuram

+0

今、angularjsのマスターブランチは、あなたがリファレンスを作成したその時です。だからこそ、リファレンスは実際には読者に何も与えません。これを避けるには、マスターブランチではなく特定のコミット状態でのリポジトリへの参照を作成してください。 –

+0

@ a-bobkovありがとう、リンクを修正しました – dfsq

0

ディレクティブは、((例えば、fooBarDirective)キャメルケースの名前を持っている必要があります大文字小文字を区別しません)。