Xterm.js 是一个基于 TypeScript 的前端终端模拟器库,它允许你在浏览器中嵌入一个功能强大的终端。Xterm.js 提供了丰富的 API 和配置选项,使得开发者可以轻松地创建自定义的终端应用。本文将介绍如何使用 Xterm.js,并提供一个基本的页面示例,以及常见的参数和方法。
Xterm.js基本示例、常见参数和方法
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Xterm.js基本示例、常见参数和方法</title> <!-- 使用 unpkg 引用 Xterm.js 的 CSS 文件 --> <link rel="stylesheet" href="https://unpkg.com/xterm@latest/css/xterm.css"> <!-- 使用 unpkg 引用 Xterm.js 和 FitAddon --> <script src="https://unpkg.com/xterm@latest/lib/xterm.js"></script> <script src="https://unpkg.com/xterm-addon-fit@latest/lib/xterm-addon-fit.js"></script> <style> html,body { margin: 0; padding: 0; height: 100%; background-color: #1E1E1E; } #terminal { height: 100%; } </style> </head> <body> <div id="terminal"></div> <script> // 初始化终端 const term = new Terminal({ cursorBlink: true, // 光标闪烁 fontSize: 16, // 字体大小 fontFamily: 'monospace', // 字体 lineHeight: 1.2, // 行高 letterSpacing: 1, // 字符间距 //cols: 80, // 初始列数 //rows: 24, // 初始行数 theme: { background: '#1e1e1e', // 背景色 foreground: '#ffffff', // 前景色 cursor: '#ff0000', // 光标颜色 selection: '#666666', // 选中文本的背景色 }, cursorStyle: 'bar', // 光标样式(block/bar/underline) cursorWidth: 2, // 光标宽度(仅对 bar 样式有效) scrollback: 5000, // 可回滚的行数 scrollSensitivity: 2, // 滚动灵敏度 allowTransparency: true, // 允许背景透明 convertEol: true, // 将换行符转换为回车换行符 disableStdin: false, // 是否禁止用户输入 windowsMode: false, // 是否启用 Windows 模式 }); // 初始化 FitAddon const fitAddon = new FitAddon.FitAddon(); term.loadAddon(fitAddon); // 加载 FitAddon // 将终端附加到页面上的 div 元素 term.open(document.getElementById('terminal')); // 调整终端大小以适配容器 fitAddon.fit(); // 初始适配 window.addEventListener('resize', () => fitAddon.fit()); // 窗口大小变化时重新适配 // 向终端写入欢迎信息 term.writeln('注意!这是基础的Xterm.js!'); // 写入一行文本并换行 term.writeln('如需支持回车、ctrl+a、ctrl+c、ctrl+v、tab等需要额外增加js代码。'); // 写入一行文本并换行 term.write('尝试输入: '); // 写入文本不换行 // 处理用户输入 term.onData(data => { term.write(data); // 将用户输入回显到终端 }); // 监听键盘按键事件 term.onKey(e => { console.log('按键:', e.key); // 打印按键信息 }); // 监听终端大小变化事件 term.onResize(data => { console.log('终端大小:', data.cols, 'x', data.rows); // 打印终端大小 }); // 监听换行事件 term.onLineFeed(() => { console.log('换行'); // 打印换行信息 }); // 监听滚动事件 term.onScroll(newPosition => { console.log('滚动位置:', newPosition); // 打印滚动位置 }); // 选择终端中的所有内容 term.selectAll(); // 选中所有文本 // 获取当前选中的文本 const selectedText = term.getSelection(); // 获取选中文本 console.log('选中文本:', selectedText); // 打印选中文本 // 清除当前选中的文本 term.clearSelection(); // 清除选中文本 // 滚动到底部 term.scrollToBottom(); // 滚动到底部 // 滚动到顶部 term.scrollToTop(); // 滚动到顶部 // 滚动到指定行 term.scrollToLine(10); // 滚动到第 10 行 // 清除终端内容 term.clear(); // 清除终端内容 // 重置终端状态 term.reset(); // 重置终端 // 聚焦到终端 term.focus(); // 聚焦终端 // 取消聚焦 term.blur(); // 取消聚焦 // 调整终端的列数和行数 //term.resize(100, 30); // 调整终端大小 // 销毁终端实例并释放资源 // term.dispose(); // 销毁终端 // 刷新指定行范围的内容 term.refresh(0, term.rows); // 刷新终端内容 // 清除终端的纹理缓存 term.clearTextureAtlas(); // 清除纹理缓存 </script> </body> </html>
转载请注明:运维博客 » Xterm.js基本示例、常见参数、常见方法