Xterm.js基本示例、常见参数、常见方法

Orther 52℃

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基本示例、常见参数、常见方法