11

AngularJS ディレクティブはng-プレフィックスを付けています。実際のxml名前空間を使用する代わりに、プレフィックスを使用することを主張するのはなぜですか?

AngularJS のドキュメントから:

古いスタイルのディレクティブ構文 ng: を使用する場合は、html に xml-namespace を含めて IE を快適にします。(これは歴史的な理由からここにあり、ng: の使用は推奨されなくなりました。)

このようなものを使用するとうまくいくようです:

<html xmlns:ng="http://angularjs.org" ng:app="my-app">

この jsFiddleから明らかなように。

ただし、これを使用することは推奨されておらず、単に歴史的な理由からサポートされています。誰かがそれらの理由が何であるかを教えてもらえますか? Flex のバックグラウンドを持っているので、XML 名前空間は素晴らしいと思います。ぜひ活用したいと思っていますが、Angular がプレフィックス アプローチを採用する強力な理由があるのでしょうか?

4

2 に答える 2

4

私はこれについて疑問に思いました。それぞれがディレクティブを開発する「Widget Factory」と「Wombat Framework」という 2 つの独立したプロジェクトを考えてみましょうx。名前空間の競合を避けるために、ディレクティブ名にプレフィックスを付けることが推奨wf-xされますが、この場合、それぞれが.

<div wf-x="something"></div>両方のモジュールを含むアプリケーションで使用するとどうなりますか? 興味深いことに、angular は両方をアタッチし、それぞれを優先度の高い順にリンクします。しかし、これが正しい結果を生み出す可能性は低いです。両方のディレクティブがコントローラーを追加しようとすると、Angular はエラーを発生させます。また、2 つのディレクティブのセマンティクスと、属性の値と要素の構造に対して期待される内容が互いに競合する可能性があります。

XML では、この問題は名前空間によって解決されます。 <div xmlns:wf1="..." wf1:x="something"></div>または<wf1:x xmlns:wf1="..."></wf1:x>きれいではありませんが、使用するディレクティブを明確に記述しています。

角度がこれをサポートしないのはなぜですか? XML 名前空間は一般的ではなく、一般的な HTML では十分にサポートされていない可能性があり、解析には技術的な問題がある可能性があります。ディレクティブは、要素と属性だけでなく、コメントと CSS クラスでもサポートされており:、クラス名で何らかの方法でマングルする必要があります。しかし、最も単純な答えは、現在使用されているプレフィックスよりも高度なものを必要とするほど一般的な問題ではないということかもしれません。angular の現在のアプローチはWeb Componentsで推奨されているものであることに注意してください。その標準が進化するにつれて、角度がそれを追跡することを期待しています。このトピックについては、Polymer グループで 議論があります。

于 2014-06-13T14:41:18.297 に答える
4

angularはxmlではなくhtml機能の拡張に重点を置いているため、口がきけないように聞こえるリスクがありますか?

于 2013-10-28T09:50:39.980 に答える