Custom Elements:如何创建不同类型的 UI 元素

阅读时长 5 分钟读完

概述:

Custom Elements 是 Web 组件规范的一部分,它允许开发者创建自定义的 HTML 元素,以扩展 HTML 自带的元素集。借助 Custom Elements,开发者可以轻松地创建不同类型的 UI 元素,达到更好的可维护性和可读性。

Custom Elements 有以下优点:

  • 可重用性:开发者只需要定义一个 Custom Element,便可以在不同的页面和项目中重复使用。
  • 解耦性:Custom Elements 的创建和实现与项目的其余部分解耦,以便更好的组织和管理代码。
  • 易维护性:Custom Elements 可以大大减少模板化代码,缩短了代码编写的时间,同时也减少了代码的维护成本。

创建 Custom Elements

要创建 Custom Elements,我们需要使用 window.customElements API。除此之外,我们还需要使用 extends 关键字来扩展 HTML 元素的基类。下面是一个示例:

-- -------------------- ---- -------
----- ----------- ------- ----------------- -
  -- -----------
  ------------- -
    -- ------ ----- -----------
    --------

    -- --- ---------
    ------------------------ ---------
    ----- ---------- - ----------------

    -- ------ --- ------ -- ------- -- ---------
    ----- ------- - ------------------------------
    ----------------------------- ----------------
    ---------------------------
  -
-

-- ------ ------ -------
------------------------------------- ------------ --------- -----------

在上面的代码中:

  • 使用 class 关键字定义了一个名为 FancyButton 的类,该类扩展了 HTMLButtonElement 类。
  • 将这个类命名为 fancy-button,并将它扩展至 button 元素上。
  • 在 constructor 构造函数中,使用 attachShadow API 添加了一个 shadow DOM。
  • 然后,创建了一个 div 用于 wrapper,然后追加到了 shadowDOM 中。

以上代码运行后,我们将看到一个扩展按钮元素的“fancy-button”。

定制 Custom Elements

通过使用 Custom Elements 方案,我们不仅可以创建自己的元素,而且还可以灵活地控制它们的行为。下面是一些方法:

  • connectedCallback:该方法在元素首次连接到文档 DOM 时被调用,用于在页面上渲染元素,并在页面中显示自定义的控件。
  • disconnectedCallback:该方法在元素从文档 DOM 中被移除时调用,用于清除元素和事件。
  • attributeChangedCallback:该方法在元素的属性被添加、删除或修改时被调用。

下面是一个示例:

-- -------------------- ---- -------
----- ------------ ------- ----------- -
  -- ---------- --------------
  ------ --- -------------------- -
    ------ ------------
  -
  
  -- --------- --------
  ------------------- -
    ----- ------- - -----------------------------
    -------------- - -------------
  -
  
  -- ------------- --------
  ---------------------- -
    -------------------- ---- ------
  -
  
  -- --------- -------- --------
  ------------------------------ --------- --------- -
    -- --------- --- --------- -
      ---------------------- -----------
    -
  -

  -- ---------------
  --- -------------- -
    ---------------------------- -------
  -
  
  --- --------- -
    ------ -----------------------------
  -
-

-- ------ ------ -------
---------------------------------------- --------------

在上面的代码中:

  • class 名为 Notification,扩展了 HTMLElement 类。
  • 使用 static get observedAttributes() 方法创建属性观察器数组。(可选)
  • 使用 connectedCallback() 方法,在元素被连接到文档时的回调函数内渲染了 message 属性中的值。
  • 使用 disconnectedCallback() 方法,在元素从文档中被移除时的回调函数中记录了一条日志消息。
  • 使用 attributeChangedCallback() 方法,当属性改变时,打印一条信息。
  • 定义了属性读取器和设置器,分别用于设置和读取 message 属性。

结论:

Custom Elements提供了一种简单的方法来创建定制的 HTML 元素,该元素完全与 Web Components 兼容。开发者可以将此作为他们开发的模块,模板或 Web 应用程序的一部分,以实现高性能,流畅和易于管理的应用。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/674e575e947dc5bcb30a778d

纠错
反馈