xterm-headless介绍

xterm.js官方repo中除了浏览器组件/插件外,还有headless组件支持,那么xterm-headless是什么东西呢。

最近在翻看inshellisense时看到其中用到了xterm-headless,研究后理解了headless的作用。这里Mark下。

headless-nodejs支持

首先通过官方介绍也就知道了headless是用在nodejs侧的。即服务端也可以实例化一个terminal的客户端组件,然后操作执行。

https://static.1991421.cn/2023/2023-12-25-225330.jpeg

注意点

  1. 目前无官方nodes插件,但还是支持自定义开发的,只是不要依赖DOM API

使用

使用上的话,因为跟浏览器端一致,直接使用xterm.Terminal即可

使用场景

了解服务端也支持xterm.js后,那么最关键是使用场景在哪。

举个例子,服务端ssh2连接用户端,与目标服务器的通讯数据是流,一般我们是发送到客户端,然后写入xterm.js组件,xterm.js帮我们把数据结构化,当我们需要写入数据的时候也是通过xterm.js进行写入的。当有了服务端支持,那么举个例子,我们完全可以把数据也塞到服务端一份,那么假如用户关闭了浏览器终端,服务端还有个正常再跑,我们也可以进行任务写入数据,这不就是个远程连接—-哨兵模式吗。

inshellisense

再说回前面提到的inshellisense,简称is。is之所以会用到headless,是因为需要利用它将终端数据写入这样有一个虚拟的终端,方便计算终端光标位置,提取终端信息等。感兴趣的可以看下源码

写在最后

因此,headless还是有一定作用的,即服务端也可以完全实例化一个xterm