如何利用 Custom Elements 实现异步数据加载并展示

随着 Web 应用程序的发展,对于更快速、更可靠和更具可维护性的开发效率的要求也会随之增加。在前端开发中一个通用的问题是如何避免不必要的网络请求并实现数据的异步展示。在这方面,Custom Elements 可作为一种解决方案。

Custom Elements 是什么?

Custom Elements 是 Web Components 的一个重要部分,它可以帮助我们创建自定义 HTML 元素。与默认的 HTML 标签不同,Custom Elements 可以被定义、绑定行为和样式,称为“自定义元素”。

在 Custom Elements 中,自定义元素被封装在自定义的 JavaScript 类中。这些类继承自 Web API 中的 HTMLElement 类,可以用一些钩子函数和方法自定义元素的行为。如 today 不仅使用了元素的自定义属性,还实现了一个连接外部 API 的模块化异步方法来获取远程数据。

实现异步数据加载并展示

下面将详细介绍如何在 Custom Elements 中实现异步数据加载并展示。

创建 Custom Elements

首先,我们需要定义一个自定义元素,并设定其原型链继承 HTMLElement 即可:

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

不管你在 HTML 中定义了多少次此标签,都只有一个类实现, 就像一个普通 JavaScript 类一样。

使用 Custom Elements 属性

创建 Custom Elements 类之后,我们可以为其添加属性来控制其展示。属性是 Custom Elements 构造函数中定义的“追加者函数”或“访问器函数”。

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

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

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

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

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

在上面的代码中,我们创建了一个具有 .wrapper.content 样式的 div 容器,用于展示异步加载数据。同时,我们还将 urlselector 属性存储到了实例对象上。

其中,url 属性记录了异步请求的 URL,而 selector 属性则存放筛选异步请求获取到的数据的 CSS 选择器。

创建异步方法

接下来,我们需要创建一个异步方法,用于连接外部 API 并获取异步数据。

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

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

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

在上面的代码中,我们使用了 fetch API 连接了 URL,并返回了一个 promises 对象。我们取得的文本数据是以 promises 对象的形式出现的。

我们还创建了一个 fetchData 方法,该方法连接外部 API 并获取异步数据。在这个方法中,我们首先使用了DOM解析器将文本数据解析为 HTML。接下来,我们筛选出符合条件的数据并返回其列表。

展示异步数据

接下来,我们需要通过调用 fetchData 方法来异步获取数据,并将其渲染到 Custom Elements 的容器中。

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

在上面的代码中,我们使用了 Custom Elements 的钩子函数 connectedCallback,以便在元素被连接到文档流之后,异步请求数据并渲染到 DOM 中。

如果没有获取到数据,我们将通过 textContent 属性将提示信息显示在 .content 中。如果有数据,我们则将其通过 innerHtml 属性渲染到 .content 容器中。

完整示例代码

在上述几个步骤完成后,我们已经能够异步展示数据了。下面是全部的源代码:

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

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

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

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

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

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

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

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

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

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

总结

通过上述方法,我们可以很容易地实现异步加载数据并在 Custom Elements 中展示。使用 Custom Elements 带来的优点是我们能够自定义一个新的 HTML 标签,使得我们的代码更易于维护和实现。同时,Custom Elements 对异步请求和响应进行了高度封装,可以使得我们的代码更加优雅和高效。

想要了解更多Custom Elements的相关信息,可以参见 MDN Web Docs 上的相关文档,或者你也可以查看本篇文章涉及的全部示例代码。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/6543a2907d4982a6ebd6f0e5


猜你喜欢

  • 如何在 LESS 中使用 Media Query?

    在前端开发中,Media Query 是一种非常常见的技术,它允许我们根据设备大小和屏幕方向等条件来适配网页样式,为用户提供更加舒适的浏览体验。LESS 是一种非常流行的 CSS 预处理器,它提供了一...

    1 年前
  • Kubernetes 中的多容器部署

    随着云计算的普及与几乎所有企业都将其业务迁移至云端,容器化技术也变得越来越流行。Kubernetes 是一种流行的开源容器编排系统,其可以帮助开发人员以及 DevOps 将容器化应用程序部署在复杂的云...

    1 年前
  • 在 ES10 中实现更好的 Class 继承

    随着 JavaScript 语言的不断发展,ES6 引入了 Class 作为一个新的语法糖,使得面向对象编程变得更加简单和直观。但是在 ES6 中的 Class 继承存在一些限制,这些限制在特定的场景...

    1 年前
  • RxJS 中的 merge、concat 和 combineLatest 操作符性能比较

    RxJS 是一款流行的响应式编程库,它提供了丰富的操作符来方便开发者对流进行处理。在这些操作符中,merge、concat 和 combineLatest 是比较常见的。

    1 年前
  • 如何使用 React Native 调用 RESTful API

    React Native 是一款流行的跨平台应用开发框架,它可以让开发者使用 JavaScript 和 React 构建出高性能、原生用户体验的移动应用程序。在开发 React Native 应用的过...

    1 年前
  • 使用 SASS 实现动态字体大小的方法

    在前端开发中,动态字体大小是经常使用到的一种技术。然而,要在不同的设备和屏幕上实现一个适当的字体大小是非常具有挑战性的。SASS 是一种预处理器,它提供了一些工具和方法,可以使这个过程变得更加容易和灵...

    1 年前
  • ES9 之 RegExp Named Capture Groups 命名捕获组

    在 ES9 中,正则表达式得到了新的功能:命名捕获组。这一功能可以使我们更轻松地从匹配结果中提取出变量,并且可以更加可读和易于维护。 什么是命名捕获组? 正则表达式中,捕获组是一种被圆括号包括的子字符...

    1 年前
  • Custom Elements 中的数据格式处理及数据类型设计

    在 Web 开发中,Custom Elements 是一项非常有用的技术,它可以让我们创建自定义的 HTML 元素并重复使用它们。但是在创建 Custom Elements 时,对于数据格式的处理及数...

    1 年前
  • Serverless 编程中的异常处理方法详解

    随着云计算的发展,Serverless 架构模式已经越来越流行。相较于传统的架构模式,Serverless 架构模式可以帮助开发者更高效地开发应用,同时大大降低了部署和运维的成本。

    1 年前
  • 如何使用 Tailwind CSS 指定 HTML 元素的样式

    Tailwind CSS 是一个功能强大的 CSS 框架,可以帮助前端开发人员快速而简单地为 HTML 元素指定样式。本文将介绍如何使用 Tailwind CSS 指定 HTML 元素的样式,并提供详...

    1 年前
  • 无障碍 Web 开发中的 CSS 解决方案

    无障碍 Web 开发是一个越来越受到重视的领域,因为这可以让根据能力或不同情况,有一定困难或限制的人群访问互联网的能力得到提高。在无障碍 Web 开发中,CSS 可以是关键的一环,因为它可以帮助开发人...

    1 年前
  • ECMAScript 2021 中如何进行最佳的数组排序

    数组排序是前端开发中最基础也是最常见的操作之一。在 ECMAScript 2021 中,主要有 2 种排序方法:sort() 和 sortedIndex()。 sort() 方法 sort() 方法是...

    1 年前
  • 详解 ES8 新特性:SharedArrayBuffer 和 Atomics 对象

    随着 web 技术的不断发展,前端开发日新月异。作为前端开发人员,我们需要时刻保持对新技术的关注和学习。其中,ES8 提出了一些新的特性,SharedArrayBuffer 和 Atomics 对象就...

    1 年前
  • 解决 Express.js 中的模板渲染问题

    在使用 Express.js 进行 web 开发时,经常需要进行前端模板的渲染。Express.js 默认提供了多种模板引擎,如 Pug、EJS、Handlebars 等。

    1 年前
  • AngularJS 2.0:AngularJS 2.0 中的组件及组件生命周期解析

    AngularJS 2.0 是一款为构建现代 Web 应用程序而打造的开源前端框架。它改变了以往 AngularJS 1.x 的开发思想和设计,使得开发者可以更加高效、灵活地开发 Web 应用程序。

    1 年前
  • Koa 项目中如何使用 PM2 进行进程管理

    在实际的生产环境中,Node.js 项目需要进行进程管理时,PM2 是一个不错的选择。PM2 能够将多个 Node.js 进程进行管理和监控,保证服务的高可用和稳定性。

    1 年前
  • 探索 TypeScript 中的全局对象

    TypeScript 是一种强类型的编程语言,它在 JavaScript 语言的基础上增加了类型注解,使得代码更加可读性、可维护性和可扩展性。在 TypeScript 中,全局对象是一个非常重要的概念...

    1 年前
  • MongoDB 大批量数据导入的几种方式及优化

    在使用 MongoDB 时,经常需要导入大量数据。如何高效地导入数据,是影响 MongoDB 性能的关键之一。本文将介绍 MongoDB 大批量数据导入的几种方式,以及相应的优化方法,希望能为前端开发...

    1 年前
  • ESLint 与 webpack 插件 eslint-loader 的使用

    在前端开发中,代码风格的统一性对于团队协作和代码维护十分重要。ESLint 是一个用于检查 JavaScript 代码风格的工具,可以帮助开发者提高代码质量。此外,Webpack 是一款经典的前端构建...

    1 年前
  • 解决 Hapi 框架 Content-Length 过大问题

    在 web 开发中,随着前端复杂度的提高,传统的后端渲染往往不能完全满足业务需求。因此,前端渲染在 web 开发中扮演着重要角色。而在前端渲染中,Hapi 框架是目前较为常用的框架。

    1 年前

相关推荐

    暂无文章