秒懂 Web Component

前言

哈喽,大家好,我是海怪。

最近不是写了一篇关于京东微前端框架的文章嘛 《初探 MicroApp,一个极致简洁的微前端框架》,里面提到了一个叫 Web Components 的东西。虽然对它早有耳闻,但是一直也没怎么仔细看过,所以就深入了解了一下,今天给大家做个简单分享 😃

下面的实践代码都放在 Github 这个仓库里了

是什么

Web Components 实际上一系列技术的组合,主要包含 3 部分:

  • 自定义元素。 在 HTML 基础标签外扩展自定义标签元素
  • Shadow DOM。 主要用于将 Shadow DOM 的内容与外层 document DOM 隔离
  • HTML 模板。 使用 <template> 来定义组件模板,使用 <slot> 作为插槽使用

也正是因为它是一系列 API 的组合,所以在使用时,我们要同时关注这些 API 的兼容性:

Custom Elements

Shadow DOM

HTML templates

将上面技术合理使用后,就可以 将功能、逻辑封装到自定义标签中,通过复用这些自定义的组件来提高开发效率。 听起来就像是 Vue.jsReact 做的那一套,实际上,在使用 Web Components 的时候,也是很像的。

上手

接下来我们通过实现一个 <book-card> Web Component 来学习一下怎么使用它吧。

自定义元素

首先,创建一个 index.html,在里面直接调用 <book-card> 组件。

<body>
  <book-card></book-card>
  <script src="./BookCard.js"></script>
</body>

因为浏览器不认识 <book-card> 所以,我们需要在 BookCard.js 里注册它,并在 index.html 中引入并执行 BookCard.js

class BookCard extends HTMLElement {
   
  constructor() {
   
    super();

    const container = document.createElement('div')
    container.className = 'container'

    const image = document.createElement('img')
    image.className = 'image'
    image.src = "https://pic1.zhimg.com/50/v2-a6d65e05ec8db74369f3a7c0073a227a_200x0.webp"

    const title = document.createElement('p')
    title.className = 'title'
    title.textContent = '切尔诺贝利的祭祷'

    const desc = document.createElement('p')
    desc.className = 'desc'
    desc.textContent = 'S·A·阿列克谢耶维奇'

    const price = document.createElement('p')
    price.className = 'price'
    price.textContent = `¥25.00`

    container.append(image, title, desc, price)

    this.appendChild(container)
  }
}

customElements.define('book-card', BookCard)

上面已经实现了最基础的 DOM 结构了:

上面一直执行 createElement 并设置属性值的行为是否有点像 React 的 React.createElement 呢?

HTML 模板

这样一行一行地生成 DOM 结构不仅写的累,读的人也很难一下子看明白。为了解决这个问题,我们可以使用 HTML 模板 。直接在 HTML 里写一个 <template> 模板:

<body>
  <template id="book-card-template">
    <div class="container">
      <img class="image" src="https://pic1.zhimg.com/50/v2-a6d65e05ec8db74369f3a7c0073a227a_200x0.webp" alt="">
      <p class="title">切尔诺贝利的祭祷</p>
      <p class="desc">S·A·阿列克谢耶维奇</p>
      <p class
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 海康视频web component曾经支持Google Chrome浏览器,但是由于一些技术和兼容性问题,目前它已不再支持该浏览器。 海康视频web component是一种基于浏览器的视频监控控件,可以用于实时查看和管理海康威视摄像头的视频流。在过去,该控件是兼容Google Chrome浏览器的,用户可以在Chrome中使用该控件进行视频监控。 然而,随着各种浏览器的更新和升级,Google Chrome对插件的支持方式发生了变化。从2015年开始,Google Chrome不再支持使用Netscape Plugin API(NPAPI)的插件,而海康视频web component正是基于这个API开发的。因此,自Chrome 45版本起,海康视频web component无法在Google Chrome中使用。 为了解决这个问题,海康威视推出了基于HTML5技术的新一代web端视频监控解决方案,该方案不再依赖于插件。用户可以直接在任何支持HTML5的浏览器中使用海康视频web组件来实现视频监控。 总之,海康视频web component已经不支持Google Chrome浏览器,但是通过使用基于HTML5的新一代web端视频监控解决方案,用户仍然可以在其他浏览器中使用海康视频web组件进行视频监控。 ### 回答2: 是的,海康视频的web组件目前不支持Google Chrome浏览器。这是因为海康视频的web组件是使用ActiveX技术开发的,而Google Chrome浏览器不再支持使用ActiveX插件。ActiveX是一种只能在Internet Explorer浏览器中运行的技术,因此对于使用Chrome浏览器的用户来说,他们无法使用海康视频的web组件来观看视频或进行其他操作。为了解决这个问题,用户可以选择使用其他支持ActiveX插件的浏览器,比如Internet Explorer或者Mozilla Firefox。此外,海康视频也推出了其他的客户端软件,比如海康视通客户端和iVMS-4200客户端,这些软件可以在不同的操作系统上运行,并提供类似于web组件的功能。所以,使用Google Chrome浏览器的用户可以尝试使用这些软件来使用海康视频的服务。 ### 回答3: 海康视频的Web组件目前不再支持Google Chrome浏览器。由于技术以及安全性的原因,海康视频决定停止对Google Chrome的支持。 这意味着如果您使用Google Chrome浏览器来访问海康视频的网页或应用程序,您可能会遇到一些兼容性问题。您可能无法正常加载或使用海康视频的功能。 为了确保最佳的用户体验和安全性,我们建议您使用其他支持海康视频的浏览器。一些其他流行的浏览器,如Microsoft Edge、Mozilla Firefox或Safari,仍然继续支持海康视频的Web组件。 如果您仍然希望使用Google Chrome浏览器,并且需要访问海康视频的功能,您可能需要考虑使用其他方式,如通过海康视频的移动应用程序访问。移动应用程序通常会提供更好的兼容性和功能支持。 总之,海康视频的Web组件不再支持Google Chrome浏览器。为了获得最佳的兼容性和功能支持,我们建议您使用其他支持海康视频的浏览器或通过移动应用程序访问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

写代码的海怪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值