摘要:那么使用簡單的文本和符號,就夠自己拼湊出命令行的效果下面例子文件已上傳當(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;i3. 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
摘要:引子很多使用開發(fā)的工具都會提供一個命令行操作界面,這些工具在執(zhí)行的過程中會實時更新執(zhí)行進度或數(shù)據(jù)的下載解壓縮進度等,例如,這些信息會再終端的同一行的同一位置顯示,而不是一行一行逐次打印顯示那么其是怎么實現(xiàn)的有沒有相應(yīng)地模塊提供這個功能呢嗯, 引子 很多使用nodejs開發(fā)的工具都會提供一個命令行操作界面(CLI),這些工具在執(zhí)行的過程中會實時更新執(zhí)行進度或數(shù)據(jù)的下載解壓縮進度等,例如1...
摘要:編寫一個簡單的程序,使其能接收一個或者多個命令行參數(shù),并且在終端標(biāo)準(zhǔn)輸出中打印出這些參數(shù)的總和。處理所有可能發(fā)生的錯誤,并把它們傳遞給回調(diào)函數(shù)。編寫一個程序來發(fā)起一個請求,所請求的為命令行參數(shù)的第一個。 learnyounode 13課總結(jié)(上) 最近對nodejs比較感興趣,但是苦于無法下手,直接啃文檔又覺得十分生硬無趣。 幸好有熱心網(wǎng)友推薦了learnyounode這個好玩的入...
摘要:把文件上傳路徑指定到然后用當(dāng)前日期和文件名命名上傳過來的文件。后端利用建立服務(wù)器,利用中間件指定文件路徑。利用這個前端和后端技術(shù),我們基本上就可以做出一個圖片上傳存儲的基本網(wǎng)站核心。 前幾天看了騰訊云社區(qū)的一個文件上傳的文章文件上傳那些事兒,大體上講了以下h5中圖片上傳的幾個核心原理,但是沒有后端接受的服務(wù)器代碼,沒法做測試。也沒有具體的一個實例都是一些基本的原理片段,并且ui界面也不...
摘要:前言本篇主要介紹基本數(shù)據(jù)類型,以文本進度條為例,介紹庫的使用。 前言 本篇主要介紹基本數(shù)據(jù)類型,以文本進度條為例,介紹time庫的使用。 并在最后對蟒蛇繪制的代碼進...
摘要:起因前幾天網(wǎng)易相冊宣布即將停止運營,自己有幾千張照片需要下載,官方給的批量下載工具已經(jīng)無法打開下載頁面。無奈只能自己做一個。如果感動了你,可以在下面小額打賞,對我的支持和鼓勵。 起因:前幾天網(wǎng)易相冊宣布即將停止運營,自己有幾千張照片需要下載,官方給的批量下載工具已經(jīng)無法打開下載頁面。無奈只能自己做一個。 該教程專為小白用戶寫的,大神請直接移步github:https://github....
閱讀 2406·2021-10-09 09:44
閱讀 2139·2021-10-08 10:05
閱讀 3431·2021-07-26 23:38
閱讀 3008·2019-08-28 18:16
閱讀 820·2019-08-26 11:55
閱讀 1827·2019-08-23 18:29
閱讀 2042·2019-08-23 18:05
閱讀 1372·2019-08-23 17:02