簡體   English   中英

AngularJS 指令作為“自定義”HTML 標簽:這不是危險的並且可能與未來的 HTML 版本沖突嗎?

[英]AngularJS directives as "custom" HTML tags: isn't this dangerous and may conflict with future HTML versions?

我目前正在閱讀很多關於不同 JS 框架(EmberJS、AngularJS 等)的信息。

乍一看,我喜歡 AngularJS 使用像自定義 HTML 標簽這樣的指令的想法:

<mytag>...</mytag>

但這不是很危險嗎? 如果我定義了很多這樣的標簽,那么未來的 HTML 規范很可能也定義了我的一個自定義標簽,但具有完全不同的含義!

我知道 HTML 規范本身可能允許自定義標簽:

http://w3c.github.io/webcomponents/spec/custom/

但目前,它不是。 那么使用自定義標簽作為指令是一種好習慣嗎? 還是我應該更好地依賴ng-xxx屬性?

我認為您創建自己的元素指令非常安全。 未來出現同名 HTML 標簽的風險非常低。

您還可以命名您的指令,這將顯着降低任何未來命名沖突的風險。

假設您的應用程序名稱是“MyApp”,您可以使用以下內容:

<ma-custom-tag></ma-custom-tag>

這也有助於避免您可能添加到項目中的任何 angular 模塊中的沖突。 大多數發布的 Angular 庫都應該有一些命名空間。

Angular 項目有一個涉及這個概念的最佳實踐 Wiki: https : //github.com/angular/angular.js/wiki/Best-Practices

自定義元素的名稱中需要一個破折號。 原生 HTML 標簽沒有破折號(至少沒有破折號)。 在 angular 中,您可以使用駝峰式名稱定義指令,這也解決了您的后顧之憂。

機會很小,是的。 但是,讓我們做一些數學運算:

如果您的標簽名稱是一個字母長,則任何一個新標簽具有相同名稱的可能性為 26 分之一。

如果它是兩個字母長,則有一個 26*26 的機會。

簡而言之,它發生的幾率是 26^[標簽名稱中的字母數]。 小的。 鑒於標准 HTML 中標簽名稱的平均長度為 6 個字母,這是 308915776 分之一的機會。 這不包括帶有破折號和所有內容的自定義標簽。

此外,AngularJS 是一個 Google 項目。 谷歌遠遠領先於我們其他人,如果看起來像這樣的事情會發生,他們會成立一個團隊,並在幾個小時內甚至更短的時間內找到解決方案。

您無需擔心標簽沖突。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM