每周npm模块源码解读:progress
2018-10-07 字数统计:1.4k 字 阅读时长 ≈ 1 分钟

周2018.10.1 ~ 2018.10.7

前言

模块名:每周npm模块源码解读:progress

github: https://github.com/visionmedia/node-progress

描述:提供在终端中灵活的进度条

适合人群:至少看过一遍源码

正文

首先定义了 ProgressBar 类,默认将 process.stderr 作为终端的输出,紧接着定义类属性。

该类有5个类方法,分明为 tick , render , update , interruptterminate 。着重讲述 tickrender 这两个方法。

方法 tick
设置属性 renderThrottle 值为0时,即立刻执行方法 render 。否则定义一个定时器,来执行方法 render 。如果当进度条完成时,执行 terminate

方法 render
每一次定时器的执行的会生成表示进度条的字符,然后显示到终端上。是通过计算当前时刻已完成的和未完成的,然后通过字符串方法 replace 来替换。如果有自定义的token,也可以进行替换。

方法 update
作用是在进度条的过程中更新完成率和tokens,然后执行方法 tick 。每次 update 都会去重新去 tick

方法 interrupt
在此刻,输出message。实则是打断此刻的进度条输入信息。

方法 terminate

终止进度条。

结语

较好理解,每个属性和方法都有较为清晰的理解。可以从中学到流与终端的搭配使用。