xterm-headless介绍
xterm.js官方repo中除了浏览器组件/插件外,还有headless组件支持,那么xterm-headless是什么东西呢。
最近在翻看inshellisense时看到其中用到了xterm-headless,研究后理解了headless的作用。这里Mark下。
headless-nodejs支持
首先通过官方介绍也就知道了headless是用在nodejs侧的。即服务端也可以实例化一个terminal的客户端组件,然后操作执行。
注意点
- 目前无官方nodes插件,但还是支持自定义开发的,只是不要依赖DOM API
使用
使用上的话,因为跟浏览器端一致,直接使用xterm.Terminal
即可
使用场景
了解服务端也支持xterm.js后,那么最关键是使用场景在哪。
举个例子,服务端ssh2连接用户端,与目标服务器的通讯数据是流,一般我们是发送到客户端,然后写入xterm.js组件,xterm.js帮我们把数据结构化,当我们需要写入数据的时候也是通过xterm.js进行写入的。当有了服务端支持,那么举个例子,我们完全可以把数据也塞到服务端一份,那么假如用户关闭了浏览器终端,服务端还有个正常再跑,我们也可以进行任务写入数据,这不就是个远程连接—-哨兵模式吗。
inshellisense
再说回前面提到的inshellisense,简称is。is之所以会用到headless,是因为需要利用它将终端数据写入这样有一个虚拟的终端,方便计算终端光标位置,提取终端信息等。感兴趣的可以看下源码
写在最后
因此,headless还是有一定作用的,即服务端也可以完全实例化一个xterm