成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

nodejs 終端打印進(jìn)度條

dack / 3938人閱讀

摘要:那么使用簡(jiǎn)單的文本和符號(hào),就夠自己拼湊出命令行的效果下面例子文件已上傳當(dāng)然,進(jìn)度條的效果可以根據(jù)需要自己設(shè)計(jì)啦,我這里只是給大家一個(gè)參考。

1. 場(chǎng)景導(dǎo)入

當(dāng)我們對(duì)大量文件進(jìn)行批量處理的時(shí)候(例如:上傳/下載、保存、編譯等),常常希望知道當(dāng)前進(jìn)展如何,或者失敗(成功)的任務(wù)有多少;當(dāng)我們的代碼或程序已經(jīng)發(fā)布,用戶在執(zhí)行安裝的過(guò)程中,一個(gè)合適的(終端/命令行)進(jìn)度條可以準(zhǔn)確反映安裝的步驟和進(jìn)程,提升程序的可用性,一定程度緩解用戶在等待中的煩惱……

2. 基本原理

首先,在終端打印出文本是件比較容易的事情。
那么使用簡(jiǎn)單的文本和符號(hào),就夠自己拼湊出命令行的效果(下面例子):

文件已上傳: 43.60% █████████████████████????????????????????????????? 150/344

當(dāng)然,進(jìn)度條的效果可以根據(jù)需要自己設(shè)計(jì)啦,我這里只是給大家一個(gè)參考。

這里,我將打印命令行的方法構(gòu)造成一個(gè)工具模塊 progress-bar.js,具體實(shí)現(xiàn)如下 :-)

// 這里用到一個(gè)很實(shí)用的 npm 模塊,用以在同一行打印文本
var slog = require("single-line-log").stdout;

// 封裝的 ProgressBar 工具
function ProgressBar(description, bar_length){
  // 兩個(gè)基本參數(shù)(屬性)
  this.description = description || "Progress";       // 命令行開(kāi)頭的文字信息
  this.length = bar_length || 25;                     // 進(jìn)度條的長(zhǎng)度(單位:字符),默認(rèn)設(shè)為 25

  // 刷新進(jìn)度條圖案、文字的方法
  this.render = function (opts){
    var percent = (opts.completed / opts.total).toFixed(4);    // 計(jì)算進(jìn)度(子任務(wù)的 完成數(shù) 除以 總數(shù))
    var cell_num = Math.floor(percent * this.length);             // 計(jì)算需要多少個(gè) █ 符號(hào)來(lái)拼湊圖案

    // 拼接黑色條
    var cell = "";
    for (var i=0;i
3. Run 起來(lái)

基于上面的實(shí)現(xiàn),先說(shuō)一下這個(gè) progress-bar.js 的用法:

// 引入工具模塊
var ProgressBar = require("./progress_bar");

// 初始化一個(gè)進(jìn)度條長(zhǎng)度為 50 的 ProgressBar 實(shí)例
var pb = new ProgressBar("下載進(jìn)度", 50);

// 這里只是一個(gè) pb 的使用示例,不包含任何功能
var num = 0, total = 200;
function downloading() {
  if (num <= total) {
    // 更新進(jìn)度條
    pb.render({ completed: num, total: total });

    num++;
    setTimeout(function (){
      downloading();
    }, 500)
  }
}
downloading();

run 一下上面的代碼,執(zhí)行效果如下:

原創(chuàng)文章,轉(zhuǎn)載請(qǐng)注明出處

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/82618.html

相關(guān)文章

  • Nodejs命令行光標(biāo)位置的設(shè)置

    摘要:引子很多使用開(kāi)發(fā)的工具都會(huì)提供一個(gè)命令行操作界面,這些工具在執(zhí)行的過(guò)程中會(huì)實(shí)時(shí)更新執(zhí)行進(jìn)度或數(shù)據(jù)的下載解壓縮進(jìn)度等,例如,這些信息會(huì)再終端的同一行的同一位置顯示,而不是一行一行逐次打印顯示那么其是怎么實(shí)現(xiàn)的有沒(méi)有相應(yīng)地模塊提供這個(gè)功能呢嗯, 引子 很多使用nodejs開(kāi)發(fā)的工具都會(huì)提供一個(gè)命令行操作界面(CLI),這些工具在執(zhí)行的過(guò)程中會(huì)實(shí)時(shí)更新執(zhí)行進(jìn)度或數(shù)據(jù)的下載解壓縮進(jìn)度等,例如1...

    Null 評(píng)論0 收藏0
  • nodejs 初入--learnyounode課程總結(jié)(上)

    摘要:編寫(xiě)一個(gè)簡(jiǎn)單的程序,使其能接收一個(gè)或者多個(gè)命令行參數(shù),并且在終端標(biāo)準(zhǔn)輸出中打印出這些參數(shù)的總和。處理所有可能發(fā)生的錯(cuò)誤,并把它們傳遞給回調(diào)函數(shù)。編寫(xiě)一個(gè)程序來(lái)發(fā)起一個(gè)請(qǐng)求,所請(qǐng)求的為命令行參數(shù)的第一個(gè)。 learnyounode 13課總結(jié)(上) 最近對(duì)nodejs比較感興趣,但是苦于無(wú)法下手,直接啃文檔又覺(jué)得十分生硬無(wú)趣。 幸好有熱心網(wǎng)友推薦了learnyounode這個(gè)好玩的入...

    masturbator 評(píng)論0 收藏0
  • 一步一步搭建一個(gè)圖片上傳網(wǎng)站(后臺(tái)服務(wù)器用nodejs

    摘要:把文件上傳路徑指定到然后用當(dāng)前日期和文件名命名上傳過(guò)來(lái)的文件。后端利用建立服務(wù)器,利用中間件指定文件路徑。利用這個(gè)前端和后端技術(shù),我們基本上就可以做出一個(gè)圖片上傳存儲(chǔ)的基本網(wǎng)站核心。 前幾天看了騰訊云社區(qū)的一個(gè)文件上傳的文章文件上傳那些事兒,大體上講了以下h5中圖片上傳的幾個(gè)核心原理,但是沒(méi)有后端接受的服務(wù)器代碼,沒(méi)法做測(cè)試。也沒(méi)有具體的一個(gè)實(shí)例都是一些基本的原理片段,并且ui界面也不...

    Darkgel 評(píng)論0 收藏0
  • Python——基本數(shù)據(jù)類型(模塊2: time庫(kù)的使用)(實(shí)例3:文本進(jìn)度

    摘要:前言本篇主要介紹基本數(shù)據(jù)類型,以文本進(jìn)度條為例,介紹庫(kù)的使用。 前言 本篇主要介紹基本數(shù)據(jù)類型,以文本進(jìn)度條為例,介紹time庫(kù)的使用。 并在最后對(duì)蟒蛇繪制的代碼進(jìn)...

    Jenny_Tong 評(píng)論0 收藏0
  • nodejs做了一個(gè)網(wǎng)易相冊(cè)全量下載工具

    摘要:起因前幾天網(wǎng)易相冊(cè)宣布即將停止運(yùn)營(yíng),自己有幾千張照片需要下載,官方給的批量下載工具已經(jīng)無(wú)法打開(kāi)下載頁(yè)面。無(wú)奈只能自己做一個(gè)。如果感動(dòng)了你,可以在下面小額打賞,對(duì)我的支持和鼓勵(lì)。 起因:前幾天網(wǎng)易相冊(cè)宣布即將停止運(yùn)營(yíng),自己有幾千張照片需要下載,官方給的批量下載工具已經(jīng)無(wú)法打開(kāi)下載頁(yè)面。無(wú)奈只能自己做一個(gè)。 該教程專為小白用戶寫(xiě)的,大神請(qǐng)直接移步github:https://github....

    elva 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<