我曾经看过这个演示,它打印出一段文本(就像你在输入时得到的那样some-command --help
),然后它跳回到文本中的几个关键字并更改文本颜色,之后它已经在终端中打印出来.
这对我来说似乎很疯狂。他们是怎么做到的?
开始考虑它,我猜它stdout
在stdin
技术上是一个“IO 流”,所以也许这是一个跟踪光标位置的持久变量?我记得在构建语言解析器时做过类似的事情。
目标是这样的:假设您在控制台中输入以下内容,它会输出一个空白数组,因为在 Node.js 中,它都是异步的,我们不想每次都在控制台中编写异步函数:
$ node app.js
> App.User.all()
=> []
然后当异步回调执行时,您返回并编辑=> []
以包含结果:
$ node app.js
> App.User.all()
=> [#<User id:1>, #<User id:2>...]
即使有很多其他问题需要解决(与这个问题无关。我知道你可以定义一个全局回调并做类似的事情App.User.all(_c)
),至少知道如何实现这将是很棒的。
打印完后如何编辑终端输出?