关于 Web 组件的 5 个问题
在本文中,我们将尝试回答以下与 Web 组件相关的问题:
- 什么是网络组件?
- webcomponents的一些基本原理是什么?
- webcomponents 有哪些应用?
- webcomponents 有哪些限制?
- 简单的演示。
什么是 Web 组件?
简而言之,webcomponents 用于创建自定义 HTML 元素或扩展现有 HTML 元素(以适应您的自定义功能)。 Webcomponent 的 API 是默认 Web 平台 API 的一部分,它遵循现有的 Web 标准,这意味着 Web 组件可以在现代浏览器中工作,无需任何第三方。
webcomponents的一些基本原理是什么?
自定义元素 API:
一组原生 Javascript API(即:直接在浏览器中工作),允许开发人员定义自定义 HTML 元素或扩展现有元素。
- 自定义元素可以定义如下:
CustomElement class with all the lifecycle events
Defining new tag name my-custom-element
- 已连接回调 , 断开回调 , 采用回调 和 属性更改回调 是生命周期事件。阅读屏幕截图中的评论以获取详细信息。
3. 这个自定义元素可以像普通的 HTML 元素一样使用,如下所示:
4. 我们还可以通过定义自定义元素来扩展现有的 HTML 元素,如下所示:
Extending div to be used as my-custom-element
5.现在我们可以使用div如下 我的自定义元素
:
Shadow DOM(文档对象模型)
独立于主 DOM 呈现的独立 DOM 树。 Shadow DOM 可以附加到主 DOM 中的任何节点。 Shadow DOM 允许单独编写自定义元素的脚本和样式,而不必担心与主 DOM 发生冲突。
- ShadowDOM 包含红色方块内的所有内容。
- 在 ShadowDOM 中定义的 CSS 不会影响外部的“普通 div”。同样,在主 DOM 中定义的 CSS 不会影响 ShadowDOM 中的 div。
- 注意 ** #shadow-root(打开)** 它 ** __** 显示 ShadowDOM 是在开放模式下创建的。开放模式使 ShadowDOM 可以使用 DOM javascript API 从外部访问,如下所示:
shadow-root (open) screenshot
4. 如果ShadowDOM是在封闭模式下创建的,那么ShadowDom是唯一的。从自定义元素内部访问(即:msg-component),上面的命令将返回 无效的 ,如下所示:
shadow-root (closed) screenshot
HTML 模板
和 using template and slot in html file using template in custom element 由于 webcomponents 只是在现代浏览器中本地工作(不需要任何第三方库)。这种质量使它们与任何框架或库兼容,因为 Webcomponent 就像任何其他 HTML 元素一样。这允许不同的团队和组织与框架无关,这意味着他们可以选择他们想要使用的任何框架或库,并且仍然可以共享用 webcomponent 编写的 UI 组件。 通过使用 ShadowDOM,可以将 css 锁定在 webcomponent 内部,这意味着在 ShadowDOM 中定义的 css 不能被外部操作或覆盖(即:应用程序 css)。这将导致全面一致的 UI/UX。例如:如果您想要在所有产品中使用圆形按钮,那么您只需制作一个按钮 web 组件,圆形按钮 css 锁定在 shadow DOM 中,这将限制任何团队有意或无意地覆盖它。 像其他一切一样,webcomponents 有一些权衡,你应该在使用它们之前意识到这一点。 Webcomponents 在所有现代浏览器上都运行良好,但是对于旧版浏览器(例如 ie 11),您需要添加一些 填充物 支持网络组件。 由于 web 组件相对不如 React 或 Angular 出名,因此大多数 UI 开发人员没有任何使用它们的经验。 如果您有用于测试的现有自动化脚本,那么您需要调整脚本以使其适用于 Web 组件。例如:由于 Shadow DOM,单击普通按钮的脚本可能无法与自定义按钮一起使用。 这是一个使用 webcomponents 编写的简单计算器 关联: https://rameezaijaz.com/webcomponents-demo/ GitHub: https://github.com/RameezAijaz/webcomponents-demo 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明网络组件的应用?
1. 框架自由:
2. 全面一致的 UI/UX:
Web 组件的限制:
1. 旧版浏览器支持:
2.学习曲线:
3.自动化脚本:
演示: