Npm 包 @gemcook/notification 使用教程

面试官:小伙子,你的数组去重方式惊艳到我了

简介

@gemcook/notification 是一款用于浏览器及 Node.js 环境下的轻量级、易于使用的通知插件。它的设计目标是简单易用、高度可定制和可扩展性强。你可以用它来在用户界面中展示 Notifications,其中包括通知的文本、图标,以及其他元数据等信息。

本教程将会教你如何使用 @gemcook/notification 来实现自定义通知的展示,同时我们还会对其源代码进行分析,帮助你更好地理解它的实现原理及设计思想。

安装

你可以使用以下命令来安装 @gemcook/notification

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

使用

在浏览器中使用

在浏览器中使用时,你需要在你的 HTML 文件中引入 @gemcook/notification

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

在代码中,我们使用 gemNotify 函数来创建一个通知。这个函数接受一个对象作为参数,包含了通知的标题、内容、超时时间等信息。当用户点击通知时,它会自动消失。如果用户没有操作,则在超时时间之后自动消失。

在 Node.js 中使用

在 Node.js 中使用的时候,你需要通过 require 来导入模块:

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

之后你可以调用 gemNotify 函数来创建通知,接口与浏览器中使用相同:

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

配置项

@gemcook/notification 内置了丰富的配置项,可以让你更加灵活地定制通知的外观和行为。下面是具体的配置项和使用示例:

名称 类型 默认值 说明
title string '' 通知标题
body string '' 通知内容
icon string '' 通知图标 URL
clickAction string or function '' 点击通知的行为,可以是一个 URL,或者一个回调函数
timeout number 0 自动消失时间,单位为毫秒
tag string '' 通知的标签,用于分类或者去重
badge string '' 通知右上角的提醒图标 URL
silent boolean false 是否静音
noscreen boolean false 是否不在锁屏界面和状态栏中显示
sticky boolean false 是否永久保持通知
vibrate number or number[] 0 设置通知震动模式,参数为一个数字或者数字序列

示例:

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

API

gemNotify(options)

gemNotify 函数用来创建一个通知。它接受一个对象作为参数,包含了通知的各个配置项。返回值为一个 Notification 对象,可以用它来操作通知的状态。

示例:

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

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

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

gemNotify.requestPermission()

requestPermission 函数用来请求用户授权通知。它返回一个 Promise 对象,表示用户的同意或拒绝。如果用户同意,Promise 的状态为 granted,否则为 denied

示例:

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

源代码解析

@gemcook/notification 本身也是一个比较简单的 Npm 包,它的源代码非常易懂。实现主要基于 Notification API,也就是浏览器通知 API,同时还使用了 ES6 的一些语法和模块化工具。

源代码结构如下:

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

其中,src 目录下是 @gemcook/notification 实现的源代码,包括 gem-notify.jsgem-notify.scssutils.js 三个文件,分别对应通知库的主要逻辑、样式和小工具。

具体实现细节可以参考源代码,这里我们简单分析一下主要逻辑。

主要逻辑

以下是 gem-notify.js 的核心代码:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

这段代码实现了 @gemcook/notification 的主要功能,它包含了以下几个部分:

  1. 默认配置项:DEFAULT_OPTIONS
  2. 通知状态记录:isVisiblenotifications。前者记录是否已经弹出了通知,后者是一个数组,记录了所有未关闭的通知。
  3. createNotification 函数,用来创建一个新的通知。它首先检查 Notification API 是否可用,以及用户是否已经授权。然后根据传入的配置项创建 Notification 对象,将其加入到 notifications 数组中,并返回该对象。
  4. closeNotification 函数,用来关闭一个通知。它将清除对应的 Notification 对象,从 notifications 数组中移除。同时,在通知的超时时间到达时也会调用该函数,自动关闭该通知。
  5. closeAllNotifications 函数,用来关闭所有未关闭的通知。它将依次调用 closeNotification 函数。
  6. 当有操作发生时,如用户点击通知,Notification 对象会发出 clickclose 等事件,我们可以通过监听这些事件来实现一些复杂的功能。

总结

@gemcook/notification 是一款非常方便且易于使用的通知插件,可以帮助我们在浏览器中以及 Node.js 环境下快速创建通知。同时,它具备丰富的配置项和 API,可以让我们更加灵活地定制通知的外观和行为。在实现细节上,它利用了 Notification API,以及 ES6 的一些语法和模块化工具,具有很高的学习和指导意义。

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


猜你喜欢

  • npm 包 fendjs-collection 使用教程

    fendjs-collection 是一款实用的前端数据集合库,提供了多种处理集合数据的方法。本文将向您介绍如何使用 fendjs-collection,以便更好地管理您的前端数据集合。

    5 年前
  • npm 包 bindable-decor 使用教程

    在前端开发中,我们经常会使用许多第三方库和工具来帮助我们提高开发效率和代码质量。其中,npm (Node Package Manager) 是一个经常用来管理这些包的工具。

    5 年前
  • npm 包 bindable 使用教程

    本文介绍了 npm 包 bindable 的使用方法和相关概念。bindable 是一个小型的数据绑定工具,可以方便地绑定数据和 DOM 元素,是前端开发中常用的工具之一。

    5 年前
  • npm 包 bind-all 使用教程

    前言 npm 包是前端领域非常常见的工具,它为前端开发者提供了很多便捷的功能和工具,其中 bind-all 包就是一个非常有用的工具包。 bind-all 包可以将对象的方法全部绑定到对象上,避免了对...

    5 年前
  • npm 包 awsm-cli 使用教程

    简介 awsm-cli 是一个用于快速构建 Web 应用的命令行工具。使用 awsm-cli,可以快速创建基于 React、Vue、Angular 等主流框架的项目,并且支持自定义配置,方便快捷。

    5 年前
  • npm 包 armada 使用教程

    什么是 armada? armada 是一个基于 React 和 Redux 的前端组件库,它提供了各种可重用的 UI 组件和工具,封装了大量的复杂的业务逻辑和视觉效果,方便开发者快速构建用户界面。

    5 年前
  • npm 包 @buggyorg/jsedn 使用教程

    介绍 JavaScript edn(也称为 JSEDN)是一种基于edn协议的JavaScript语言实现。该协议旨在提供一种简单且易于理解、互操作和可扩展的数据格式。

    5 年前
  • npm 包 strip-ansi 使用教程

    什么是 strip-ansi strip-ansi 是一个 npm 包,它可以移除字符串中的 ANSI 转义码。ANSI 转义码是在终端中使用的颜色代码,包括字体颜色、背景色、字体样式等等。

    5 年前
  • npm 包 @sfdx-falcon/validator 使用教程

    前言 前端开发人员经常需要验证表单或表格中的数据,以确保其符合特定的格式和要求。在过去,这通常需要开发人员自己编写自定义验证函数。但是,随着 Node.js 和 npm 的普及,现在有很多优秀的验证库...

    5 年前
  • npm 包 @sfdx-falcon/types 使用教程

    简介 @sfdx-falcon/types 是一个基于 TypeScript 的 npm 包,为 @sfdx-falcon 集成包提供了特定的类型声明和通用工具类型。

    5 年前
  • npm包 @sfdx-falcon/status 使用教程

    前言 在前端开发中,我们需要使用各种功能强大的npm包,这些包可以帮助我们更快速地搭建工程、提升开发效率,在这其中,@sfdx-falcon/status也是一个非常不错的npm包,接下来,我们将介绍...

    5 年前
  • npm 包 @sfdx-falcon/error 使用教程

    介绍 在 web 前端开发中,处理异常错误信息是一项必不可少的工作。尤其是在处理大型应用程序时,错误信息的处理显得尤为重要。而 npm 包 @sfdx-falcon/error 就是专门处理错误信息的...

    5 年前
  • npm 包 @sfdx-falcon/debug 使用教程

    概述 在前端开发过程中,debugging 是一个非常重要的环节。而 @sfdx-falcon/debug 这个 npm 包,为前端开发者提供了一种更加方便、高效的 debug 方式。

    5 年前
  • npm 包 @salesforce/ts-types 使用教程

    随着 TypeScript 的流行,我们越来越多地使用它作为我们前端代码的语言。但是在编写代码时,我们可能会遇到一个问题:如何传递和使用来自不同库的类型? 这时候,一个叫做 @salesforce/t...

    5 年前
  • npm 包 @salesforce/core 使用教程

    简介 @salesforce/core 是 Salesforce 官方提供的 Node.js 模块,用于在 Salesforce 中访问 API 和管理身份验证、加密等核心功能。

    5 年前
  • npm 包 thirty-two 使用教程

    什么是 thirty-two thirty-two 是一个基于 Node.js 的 npm 包,它提供了十进制和 32 位二进制字符串之间的相互转换功能。 如何安装 使用 npm 命令进行安装: --...

    5 年前
  • npm 包 convert-base 使用教程

    当我们需要将一个数值转化为不同进制的时候,可以使用 js 的内置方法,但是在某些情况下,我们可能需要更强大的功能,例如将一个十进制数值转化为八进制的时候,在 js 中需要进行繁琐的处理,而 npm 包...

    5 年前
  • NPM包@types/uid-safe使用教程

    在前端开发的过程中,我们可能会碰到生成唯一ID的需求。而uid-safe是一个专门用于生成唯一ID的npm包,在实际开发中也有着广泛的使用。但是,在使用uid-safe的过程中,我们往往会遇到很多问题...

    5 年前
  • npm 包 @types/qr-image 使用教程

    QR 码是一种常见的二维码,它可以存储信息,并且可以通过扫描二维码读取信息。@types/qr-image 是一个基于 Node.js 的 QR 码生成器,使用 TypeScript 编写,可以方便地...

    5 年前
  • npm 包 slash 使用教程

    什么是 slash? slash 是一个可以将路径统一处理成 Unix 风格的 npm 包。它可以解决在不同操作系统下文件路径的差异问题。在编写跨平台的前端应用程序时,使用 slash 可以使代码更加...

    5 年前

相关推荐

    暂无文章