node.js - CLUI - Nodejs 控制台中的精美进度条 - 有没有一种简单的方法来更新它?

标签 node.js console node-modules console.log

有一个现有的示例可以就地更新进度条: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/

相关文章:

node.js - 如果不是本地主机,则无法让浏览器连接到nodejs WS服务器

javascript - 如何在 then() 链中使用 promise.all

Node.js process.stdout.write 在 for 循环中闪烁

java - Eclipse - 将每个主要方法分配给一个单独的控制台

javascript - typescript 语法错误 : Cannot use import statement outside a module (side file containing functions)

javascript - Node.js中如何一一下载文件?

javascript - 与 include 一起使用时,Sequelize 返回空值

node.js - 使用 ubuntu upstart 启动时,node js multer 文件上传不起作用

java - 在 Java 环境中编译为 javascript 的模板

c++ - 两行后 fstream 没有从文本文件中读取