4
A
回答
8
它允許你封裝功能,有效地把它放在黑盒子裏。這意味着您可以創建內部運作未暴露的[可重用]組件。使用標準DOM這是不可能的。
作爲一個例子,需要HTML輸入元素。所以,說,file
類型的輸入。要在HTML頁面上使用它,只需添加<input type="file" />
,它就可以工作。你不需要添加任何額外的代碼或HTML或CSS來處理它的工作方式,它只是做,而且你不能訪問它的內部位。如果你要編寫一段用戶界面,使用HTML/CSS/JS,做同樣的事情,這將是相當複雜的。但file
輸入只是一個可以在任何地方使用的標籤,它總是做同樣的事情。 Web組件系列規範允許您創建自己的以這種方式工作的元素,並且Shadow DOM是其中的關鍵部分。您可以創建一個新元素,如<my-fantastic-file-input />
,其功能已封裝。它有自己的內部DOM子樹,但該子樹不是直接可訪問;同樣有範圍的樣式。新組件不會將其實現細節公開給文檔。
您可以完成大部分使用DOM這個東西,但的實施將全部綁到文檔/應用程序結構。使用組件,您可以提取該實現,並且可以重用它,傳遞它,發佈它並讓其他人將其放入應用程序/文檔中,並確保它在任何位置以完全相同的方式工作。由於目前使用標準DOM,所以你不能這麼做。
這是從2011年,和略掉過期的,但它的一些可能的用例的組件模型的列表:http://www.w3.org/2008/webapps/wiki/Component_Model_Use_Cases
相關問題
- 1. 今天使用「Shadow DOM」?
- 2. 使用Shadow DOM的缺點是什麼?
- 3. Shadow DOM和ReactJS
- 4. 使用window.Polymer聚合物優化= {dom:'shadow'}
- 5. 在Chrome 37中不能使用Shadow DOM?
- 6. 使用shadow DOM注入Chrome擴展UI
- 7. Shadow DOM vs Detached Elements
- 8. Shadow DOM導入行爲
- 9. Shadow DOM重置樣式表
- 10. Canvas Shadow DOM和Web組件
- 11. IOS Safari支持Shadow DOM嗎?
- 12. 在shadow DOM中執行JS
- 13. 從Shadow DOM獲取元素
- 14. 「Shadow DOM」的正確含義是什麼?
- 15. 如何在不使用Shadow DOM的情況下創建組件?
- 16. 使用Shadow DOM填充CSS封裝所需的最小JavaScript
- 17. 如何使用Shadow DOM v1從影子根目錄中訪問主機元素?
- 18. 如何跳過Shadow DOM(並使用Light DOM)代替聚合物模板
- 19. 如何使用JavaScript打印Shadow DOM與<style>標籤?
- 20. 使用polyfill可以在多大程度上模擬Shadow DOM?
- 21. Shadow DOM服務器端模板
- 22. 保留Shadow Dom主機內容
- 23. Shadow DOM和自定義樣式
- 24. Shadow DOM讓我們實現了什麼?
- 25. 如何在shadow DOM中調用Dart Polymer元素的方法?
- 26. shadow dom - 知道何時渲染/更改dom
- 27. 尷尬的差距使用的box-shadow
- 28. 我應該在我的Javascript遊戲引擎中使用DOM片段作爲Shadow dom嗎?
- 29. 如何在Chrome DevTools中顯示Shadow Dom的CSS樣式
- 30. <body>元素上的shadow DOM是一個壞主意嗎?
閱讀:HTTP://glazkov.com/2011/01/ 14/what-the-heck-is-shadow-dom /和http://www.w3.org/TR/shadow-dom/ –