有一个现有的示例可以就地更新进度条:https://github.com/nathanpeck/clui/blob/master/examples/progress.js (共60行)
自述文件中直接有更简单的示例:https://github.com/nathanpeck/clui/blob/master/README.md (仅 4 行)
var clui = require('clui');
var Progress = clui.Progress;
var thisProgressBar = new Progress(20);
console.log(thisProgressBar.update(10, 30));
所以我添加了 setInterval
以便它更新进度。我还添加了行来clear
控制台和每个间隔的新console.log
:
var clui = require('clui');
var Progress = clui.Progress;
var value = 50;
var thisProgressBar = new Progress(20);
console.log(thisProgressBar.update(value, 100));
var intervalId = setInterval(function() {
value++;
// console.log("Updated value: " + value);
process.stdout.write('\033c'); // clearing the console
console.log(thisProgressBar.update(value, 100));
if (value === 100) {
clearInterval(intervalId);
}
}, 500)
在带有倒计时微调器的示例中 - https://github.com/nathanpeck/clui/blob/master/README.md#spinnerstatustext - 我不必 清除
控制台并执行console.log
。
理想情况下,我只想做 thisProgressBar.update(value, 100)
并且进度条应该轻松就地更新...不确定我的方法是很好,在我开始复制 60 行解决方案之前我想问一下!
还打开了 GitHub 问题以获得额外的可见性:https://github.com/nathanpeck/clui/issues/22
尝试创建https://runkit.com/embed/umrs8pxg9geg演示,但它不是真正的控制台。
最佳答案
您可以使用 npm log-with-statusbar package 。这个怎么样:
var clui = require("clui");
var log = require("log-with-statusbar")();
var Progress = clui.Progress;
var value = 50;
var thisProgressBar = new Progress(20);
// console.log(thisProgressBar.update(value, 100));
log.setStatusBarText([thisProgressBar.update(value, 100)]);
var intervalId = setInterval(function() {
value++;
// console.log("Updated value: " + value);
log("Updated value: " + value);
// process.stdout.write('\033c'); // clearing the console
log.setStatusBarText([thisProgressBar.update(value, 100)]);
// console.log(thisProgressBar.update(value, 100));
if (value === 100) {
clearInterval(intervalId);
}
}, 500);
关于node.js - CLUI - Nodejs 控制台中的精美进度条 - 有没有一种简单的方法来更新它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49465265/