成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

nodejs 終端打印進度條

dack / 3818人閱讀

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

1. 場景導(dǎo)入

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

2. 基本原理

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

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

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

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

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

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

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

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

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

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

// 初始化一個進度條長度為 50 的 ProgressBar 實例
var pb = new ProgressBar("下載進度", 50);

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

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

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

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

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/82618.html

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

    elva 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<