js如何实现连接linux终端,用 xterm.js 实现一个简易的 web-terminal !

前言

大家新年好呀~ 因为工作比较忙,有一段时间没更新了(其实就是懒),一直没想好写啥,直到最近工作中遇到了个需要内嵌 网页终端(web-terminal) 的需求,踩了不少坑,终于整明白了大概,想着写篇文章回馈下社区,于是乎说干就干,走起~

xterm.js 初探

知道需要做 web-terminal ,第一件事先网上调研一下具体需要的技术,最后发现 xterm.js 为大多数 web-terminal 的解决方案,大名鼎鼎的 vscode 也在用,看来可靠性还是有所保证的。

于是乎,我兴高采烈的敲进官网找 demo,瞅了一眼,好家伙看起来挺简单啊,只需要安装一下,初始化实例就行了,如下:npm install xterm复制代码html>

    

复制代码

因为我们项目的基于 React 的,所以我准备用 create-react-app 写个 demo 试试,一顿操作之后,把官网的例子拷进 demo 里,然后运行一下,看看效果。

随后页面出来了终端的样式,如下:

正准备输写字符看看效果,好家伙。。居然无法输入,我一度怀疑是我 demo 复制错了,仔细比对,发现确实没错啊??

然后我找了找文档,发现输入还需要调用 api 才行,感情官网的例子居然还不能直接运行的,也是第一次见。

调整了下代码term.open(document.getElementById("terminal"));

term.write("Hello from \x1B[1;3;31mxterm.js\x1B[0m $ ");+ term.onData((val) => {+     term.write(val);+   }); 复制代码

输入终于可以了,但是新的问题又来了,一删除就报错

e4e97527eb67e5e2aea471f479abcc71.png

而且一回车就光标回到最开始了,这。。我不禁陷入了沉思,再次回到文档找寻,发现了文档对 onData 的描述contains real string data with any valid Unicode codepoint, thus the payload should be treated as UTF-16/UCS-2. Fo

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值