在前端开发中,我们经常需要展示加载状态或者处理中的状态。如果每个页面都去写一个 loading 效果,那岂不是太浪费时间?此时我们可以使用 npm 包 spinnies 来实现这个效果,省时省力。
spinnies 简介
spinnies 是一个轻量级的、易于使用和扩展的终端 spinner 库。它具有以下特点:
- 易于执行
- 自定义样式
- 多个 spinner 可以同时运行
安装
在使用 spinnies 之前,需要先安装它。在命令行输入以下命令:
npm install spinnies
演示
让我们先看看最基本的使用案例:
const Spinnies = require('spinnies'); const spinnies = new Spinnies(); const spinnerId = spinnies.add('任务进行中...'); setTimeout(() => { spinnies.succeed(spinnerId, { text: '任务完成' }); }, 3000);
代码的含义:
- 我们首先使用
require
导入 spinnies。 - 接着我们通过
new Spinnies()
创建一个 spinnies 实例。 - 然后我们通过
spinnies.add()
方法在终端添加一个 spinner。 - 3 秒后我们使用
spinnies.succeed()
将这个 spinner 替换成任务已完成的状态。
在终端运行以上代码,你应该能看到以下输出:
[spinnies] : 任务进行中... (spinnerId) [spinnerId] ✔︎ 任务完成
如果你看到了以上的输出,那么就运行成功了。
自定义 spinner
你可以通过设置参数来自定义 spinner。以下是一个自定义 spinner 的基本示例:
-- -------------------- ---- ------- ----- -------- - -------------------- ----- -------- - --- ---------- ------------- -------- -- ------ ------------- ------- -- ---- -------------- ------- -- -------- --- ----- --------- - ------------------------- ------------- -- - --------------------------- - ----- ------ --- -- ------
这个自定义 spinner 有以下特点:
- 完成时会使用绿色的 ✔︎ 标识。
- 缓冲区有一个青色的环在旋转。
- 环由下划线、右斜线、竖线、左斜线组成。
你可以根据你的需求调整参数。
扩展
你可以使用 spinnies.update()
和 spinnies.fail()
方法来扩展 spinner。以下是一个具有扩展功能的示例:
-- -------------------- ---- ------- ----- -------- - -------------------- ----- -------- - --- ----------- ----- --------- - ----------------------- ------------- -- - -------------------------- - ----- ------- --- -- ------ ------------- -- - ------------------------ - ----- ------ --- -- ------
代码的含义:
- 我们首先使用
require
导入 spinnies。 - 接着我们通过
new Spinnies()
创建一个 spinnies 实例。 - 然后我们通过
spinnies.add()
方法在终端添加一个 spinner。 - 1 秒后我们使用
spinnies.update()
更新它的文本信息。 - 5 秒后我们使用
spinnies.fail()
将这个 spinner 替换成请求失败的状态。
在终端运行以上代码,你应该可以看到以下输出:
[spinnies] : 请稍等... (spinnerId) [spinnerId] : 数据请求中
之后 5 秒后,你会看到以下的输出:
[spinnerId] ✘ 请求失败
结语
spinnies 是一款非常实用的 npm 在终端显示加载状态的插件,可以大大提升开发体验。希望这篇文章能够带给你一些帮助和启发。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5eedac3bb5cbfe1ea0610994