使用原生Js也可以开发自定义组件了,就像使用Vue或React组件一样,可以很方便实现组件的创建和复用,例如我自定义了一个组件:

然后就可以在页面上渲染出来。 

例如我们在一个js文件里面定义一个自己组件,组件名称必须包含连字符

class Btn extends HTMLElement {
  constructor() {
    super()
    const shaDom = this.attachShadow({ mode: "open" })
    this.p = this.h("p")
    this.p.innerText = "原生组件"
    this.p.setAttribute("style", "width:200px; height:200px;border:1px solid red")
    shaDom.appendChild(this.p)
  }

  h(el) {
    return document.createElement(el)
  }
}


window.customElements.define("man-btn", Btn)

然后在页面中引入这个js文件,并复用:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>原生WebComponent</title>
  <script src="./js/component.js"></script>
</head>
<body>
  <man-btn></man-btn>
</body>
</html>

 

customElements define()方法使用

customElements define()用于定义新的自定义元素。可以创建两种类型的定制元素:

  • 自治的自定义元素:这些元素不继承自内置 HTML元素。
  • 自定义的内置元素:这些元素继承自内置 HTML元素。

用法:

customElements.define( name, constructor, options );

参数:

  • name:它指定新的自定义元素的名称。自定义元素的名称必须包含连字符。
  • constructor:它为新的自定义元素指定构造函数。
  • options:它指定控制如何定义元素的对象。它是一个可选参数。

返回值:此方法返回void。

例:在此示例中,使用此方法定义了名为<gfg-custom-element>的自定义元素,并使用名为CustomEl的构造函数。

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐