【问题标题】:AngularJS directives as "custom" HTML tags: isn't this dangerous and may conflict with future HTML versions?AngularJS 指令作为“自定义”HTML 标签:这不是很危险并且可能与未来的 HTML 版本冲突吗?
【发布时间】:2014-03-23 10:51:09
【问题描述】:
我目前正在阅读很多关于不同 JS 框架(EmberJS、AngularJS 等)的文章。
乍一看,我喜欢 AngularJS 使用自定义 HTML 标签等指令的想法:
<mytag>...</mytag>
但这不是很危险吗?如果我定义了很多这样的标签,那么未来的 HTML 规范很可能也会定义我的一个自定义标签,但具有完全不同的含义!
我知道 HTML 规范本身可能允许自定义标签:
http://w3c.github.io/webcomponents/spec/custom/
但目前并非如此。那么使用自定义标签作为指令是一种好习惯吗?还是我应该更好地依赖ng-xxx 属性?
【问题讨论】:
标签:
javascript
html
angularjs
w3c-validation
specifications
【解决方案2】:
自定义元素的名称中需要一个破折号。本机 HTML 标记没有破折号(至少没有破折号)。在 Angular 中,您可以定义带有驼峰名称的指令,这也可以解决您的担忧。
【解决方案3】:
机会很小,是的。但是,让我们做一些数学运算:
如果您的标签名称只有一个字母,那么任何一个新标签具有相同名称的可能性为 26 分之一。
如果是两个字母,则有 26*26 分之一的机会。
简而言之,它发生的几率是 26^[标签名称中的字母数]。小的。鉴于标准 HTML 中标签名称的平均长度为 6 个字母,这是 308915776 中的一个。这不包括带有破折号的自定义标签。
此外,AngularJS 是一个 Google 项目。 Google 遥遥领先于我们其他人,如果看起来会发生类似的事情,他们将组建一个团队,并在数小时内找到解决方案。
您无需担心标签冲突。