每周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 , interrupt 和 terminate 。着重讲述 tick 和 render 这两个方法。
方法 tick :
设置属性 renderThrottle 值为0时,即立刻执行方法 render 。否则定义一个定时器,来执行方法 render 。如果当进度条完成时,执行 terminate。
方法 render :
每一次定时器的执行的会生成表示进度条的字符,然后显示到终端上。是通过计算当前时刻已完成的和未完成的,然后通过字符串方法 replace 来替换。如果有自定义的token,也可以进行替换。
方法 update :
作用是在进度条的过程中更新完成率和tokens,然后执行方法 tick 。每次 update 都会去重新去 tick 。
方法 interrupt :
在此刻,输出message。实则是打断此刻的进度条输入信息。
方法 terminate :
终止进度条。
结语
较好理解,每个属性和方法都有较为清晰的理解。可以从中学到流与终端的搭配使用。