Him*_*shu 11 javascript xml xml-namespaces angularjs
AngularJS指令ng-以它们为前缀.为什么它坚持使用前缀而不是使用实际的xml命名空间?
来自AngularJS的文档:
如果您选择使用旧样式指令语法ng:那么在html中包含xml-namespace以使IE感到满意.(这是出于历史原因,我们不再推荐使用ng:.)
使用这样的东西似乎工作:
<html xmlns:ng="http://angularjs.org" ng:app="my-app">
Run Code Online (Sandbox Code Playgroud)
从这个jsFiddle可以看出这一点.
但它不建议使用它并仅仅因为历史原因而支持它.有人能指出我的原因是什么吗?来自Flex背景,我认为XML命名空间很棒,我很乐意使用它们,但也许Angular有充分理由采用前缀方法?
我自己也曾想过这个问题。考虑两个独立的项目,“Widget Factory”和“Wombat Framework”,每个项目都开发指令x。首选做法是为指令名称添加前缀以避免命名空间冲突,但在这种情况下,每个指令名称最终可能仍会定义一个wf-x.
<div wf-x="something"></div>如果我在包含这两个模块的应用程序中使用会发生什么?有趣的是,Angular 将附加两者,并按优先级降序链接每个。但产生正确结果的几率很低。如果两个指令都尝试添加控制器,Angular 将引发错误,并且这两个指令的语义以及它们对属性值和元素结构的期望很容易相互冲突。
在 XML 中,这个问题是通过命名空间来解决的。 <div xmlns:wf1="..." wf1:x="something"></div>或<wf1:x xmlns:wf1="..."></wf1:x>不漂亮,但它们清楚地描述了我们打算使用哪个指令。
为什么角度不支持这个?XML 命名空间并不常见,并且在一般 HTML 中可能得不到很好的支持,并且解析可能存在技术挑战。指令在注释和 CSS 类以及元素和属性中受支持,并且:必须以某种方式在类名称中进行修改。最简单的答案可能是,这还不是一个足够常见的问题,还不需要比我们今天使用的前缀更高级的东西。需要注意的是,Angular 当前的方法是Web Components推荐的方法。随着该标准的发展,我希望 Angular 能够跟踪它。聚合物组中也有一些关于此主题的 讨论。
| 归档时间: |
|
| 查看次数: |
1961 次 |
| 最近记录: |