我很迷茫所有的Shadow DOM和Web Components的东西,所以原谅我...今天使用“Shadow DOM”?
我认为Shadow DOM的想法是让您的应用程序中的所有数据生活在一个数据结构的API工程完全像传统的DOM。正确?
简单地说,通过提供一种事实上的标准方式来实现使用大家已经熟悉的API,简化数据,处理数据,归档和查询数据,这对于大多数人来说更容易。正确?
如果是这样,有什么办法(图书馆?),我现在可以开始用这种方式做事了吗?
我很迷茫所有的Shadow DOM和Web Components的东西,所以原谅我...今天使用“Shadow DOM”?
我认为Shadow DOM的想法是让您的应用程序中的所有数据生活在一个数据结构的API工程完全像传统的DOM。正确?
简单地说,通过提供一种事实上的标准方式来实现使用大家已经熟悉的API,简化数据,处理数据,归档和查询数据,这对于大多数人来说更容易。正确?
如果是这样,有什么办法(图书馆?),我现在可以开始用这种方式做事了吗?
这绝对是Web组件的用途之一(将整个应用程序封装在一个封装的,可重用的DOM元素中),并且您完全有理由仅以这种方式使用它。然而,理想的用途会一直延伸到应用程序中。你的应用程序的任何部分,你可以想象成一个可重用的“小部件”,也可以受益于Shadow DOM封装。想象一下由50人组成的团队开发的应用程序,其中组件之间有特定的边界和定义良好的API。很少有CSS冲突,难以阅读的代码,以及紧密耦合,大多数网络应用程序都可以接近这种尺寸。
就今天使用这些尖端技术而言,请查看Google的开源Polymer Project。它包含一组polyfills,可将Web Components和所有相关技术带到每个现代浏览器,以及一些使这些东西更加愉快的语法糖。
此外,我发现这个关于这个问题从W3C:
那么基于什么刚刚表明我,我已经找到了最好的解释是这样的,从What the Heck is Shadow DOM?如下图所示:
影子DOM是指浏览器包含一个子树的能力 将DOM元素转换为文档的渲染,但不转化为 主文档的DOM树。
一个重要的用例是在网页上的视频控件。标记仅显示一个视频标记,包含一些属性和源标记。所有要运行的视频操作的附加代码都隐藏在Shadow DOM中,并且不可用于页面的其余部分。 <video>
标签的实际标记,javascript和样式被封装,这隐藏了每个浏览器供应商已经编写的视频控件的实现细节。
所以虽然它存在于DOM中,但它隐藏在呈现它的页面中。因此,要查看Shadow DOM,可以在Chrome中的“开发工具”下启用它。
简短的回答是,影子DOM是四个技术构成Web组件之一。这就是它与Web组件的关系。
对于一个定义,Web组件是:W3C的一个组件平台,允许从标准化构建块构建Web站点。 Web组件包含自定义元素,Shadow DOM和HTML导入和模板。
因此,虽然阴影DOM是Web组件的技术,看到MDN's page on Web Components由以下四种技术(虽然每一个都可以单独使用):
自定义元素:是创建你自己的能力自定义HTML标签和元素。他们可以拥有自己的脚本行为和CSS样式。它们是Web组件的一部分,但它们也可以单独使用。
HTML模板:HTML模板元素<template>
是用于保持被加载时,一个页不被渲染,但随后可在运行时期间使用JavaScript来实例化的客户端内容的机制。将模板想象为正在被存储以供随后在文档中使用的内容片段。
Shadow DOM:为Web组件中的JavaScript,CSS和模板提供封装。 Shadow DOM使它与主文档的DOM保持独立。您也可以在Web组件之外单独使用Shadow DOM。
HTML导入:打算成为Web组件的打包机制,但您也可以使用HTML导入本身。您通过在HTML文档中使用<link>
标签导入HTML文件。
这里有三个Web组件库:
我也发现这个网站可能会感兴趣:Web Components.org讨论和发展Web组件的最佳实践
伟大的答案的地方! –