首页/新闻资讯/正文详情

wterm原生JS教程:5行代码零依赖渲染浏览器终端

发布时间:2026/9/26 23:46:04 来源:云帆数科 栏目:资讯中心
wterm原生JS教程:5行代码零依赖渲染浏览器终端
wterm原生JS教程5行代码零依赖渲染浏览器终端【免费下载链接】wtermA terminal emulator for the web项目地址: https://gitcode.com/gh_mirrors/wterm1/wtermwterm 是一款运行在浏览器中的终端模拟器terminal emulator for the web用 Zig 编写核心并编译为仅约 26 KB 的 WASM 二进制通过原生 DOM 渲染实现接近原生的性能。本教程面向新手教你用**原生 JavaScript无框架**在网页中嵌入一个真实可用的浏览器终端原生文本选中、复制粘贴、浏览器查找、屏幕阅读器无障碍支持全部开箱即用且无需任何前端框架。为什么选择 wterm 浏览器终端传统方案多在 Canvas 上画字符牺牲了浏览器原生能力。wterm 的思路不同渲染到真实 DOM—— 文字可选中、可复制浏览器CtrlF查找和屏幕阅读器直接生效Zig WASM 内核—— VT100/VT220/xterm 转义序列解析器编译为约 26 KB 的.wasm启动快、体积小脏行追踪Dirty-row tracking—— 每帧只重绘被修改的行配合requestAnimationFrame调度渲染开销极低零依赖—— 纯wterm/dom一个包WASM 已内嵌进 JS bundle无需额外配置核心架构可参考 terminal-core.ts 与 wterm.ts前者定义了TerminalCore接口后者是 DOM 渲染器与输入处理器。最快安装方法一行命令装好 wtermnpm install wterm/dom就这么简单。WASM 二进制默认内嵌在 JS 包中不需要单独复制.wasm文件、不需要构建工具。 如果希望把 WASM 作为独立静态文件部署到 CDN 以便缓存可执行cp node_modules/wterm/core/wasm/wterm.wasm public/wterm.wasm然后传入wasmUrl选项。五步上手wterm 原生JS 最小示例只需三步建一个div、引入样式、五行动态代码。第一步HTML 容器div idterminal/div第二步引入样式与核心代码script typemodule import { WTerm } from wterm/dom; import wterm/dom/css; /script第三步实例化并初始化const term new WTerm(document.getElementById(terminal)); await term.init();到这一步一个 80×24 的浏览器终端已经挂在页面上默认还会自动回显键盘输入——你可以在控制台里直接打字试试。官方文档把这个最小流程整理在 vanilla.mdx完整的选项与方法列表见 api-reference.mdx。处理用户输入onData 回调详解默认行为是把用户敲下的字符回显到终端。当你需要把输入发送给服务器比如后端 PTY时传入onData回调即可const term new WTerm(document.getElementById(terminal), { onData(data) { socket.send(data); // 把用户输入转发到你的 WebSocket 后端 }, }); await term.init();官方 web/index.html 演示页就是一个本地回显的完整示例它把回车转成\r\n、把退格替换为\x08 \x08再term.write(out)回写非常适合逐行阅读学习。其他常用回调回调触发时机onTitle(title)应用通过 OSC 0/2 修改窗口标题时onBell(count)应用响铃BEL时是否发声由你决定onResize(cols, rows)终端网格尺寸变化时常用配置项速查表WTerm构造器接受的常用选项完整列表见 api-reference.mdx选项类型默认值说明cols/rowsnumber80 / 24初始列数 / 行数autoResizebooleantrue用ResizeObserver自动贴合容器尺寸wasmUrlstring—单独部署 WASM 文件时指定地址cursorBlinkboolean跟随应用强制打开/关闭光标闪烁maxImageWidthnumber—Kitty 图像最大渲染宽度CSS 像素onDatafunction—用户键盘输入回调切换主题一行 class 搞定wterm 内置 Default深色、Solarized Dark、Monokai、Light 四套主题全部基于 CSS 自定义属性--term-fg、--term-bg、--term-color-0~--term-color-15切主题就是加一个 classtermElement.classList.add(theme-monokai);想自定义配色直接覆盖 CSS 变量即可样式源码在 terminal.css。进阶用 WebSocketTransport 连接真实后端如果目标是接一个真实的 shell比如 Node 的node-ptywterm 提供了内置的WebSocketTransport支持二进制帧与自动重连import { WTerm, WebSocketTransport } from wterm/dom; const term new WTerm(el, { cols: 80, rows: 24 }); await term.init(); const ws new WebSocketTransport({ url: ws://localhost:8080/pty, onData: (data) term.write(data), }); ws.connect(); term.onData (data) ws.send(data);完整实现可参考 Vue 示例的 pty-server.tsVite 插件形式的 PTY 后端原理与框架无关照搬到任意后端即可。常见问题 FAQQ1必须用框架吗不需要。wterm/dom就是为原生 JS 设计的React/Vue/Svelte 包只是在其之上的封装。Q2终端里的 vim、htop 等全屏应用能跑吗可以。wterm 支持备用屏幕缓冲区alternate screen buffervim、less、htop这类 TUI 应用均正常工作。Q3中文、emoji 等宽字符显示会错位吗不会。核心内置 East Asian Width 表由 unicode_width_table.zig 生成CJK、全角与 emoji 均按双宽单元格对齐。Q4性能如何脏行追踪 帧级渲染调度意味着每帧只重绘变化的行核心 WASM 仅约 26 KB首屏几乎无感。小结wterm 让在网页里放一个真正的终端这件事回到最朴素的形态npm install wterm/dom一个div 一个 CSS importnew WTerm(el)await term.init()零依赖、零构建配置、原生 DOM 渲染五行动态代码即可交付一个支持选区、复制、主题、无障碍的浏览器终端。下一步可阅读官方文档 get-started.mdx 了解 React/Vue/Svelte 版本或在 examples/ 目录中找到各框架的完整示例工程。【免费下载链接】wtermA terminal emulator for the web项目地址: https://gitcode.com/gh_mirrors/wterm1/wterm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

本地智能体破解办公长文本超限难题
本地智能体破解办公长文本超限难题

1. 本地智能体实战:打通办公文档预处理与任务调度全链路,解决长文本超限难题你是不是也遇到过这样的场景:一份80页的PDF合同要自动提取关键条款、比对历史版本、生成摘要并触发法务审批流程,但调用大模型API时直接报错“request p… · 2026/9/26 23:46:04

长沙官网优化推广:被黑后源码下载自救实录
长沙官网优化推广:被黑后源码下载自救实录

长沙官网优化推广:被黑后源码下载自救实录 昨天凌晨三点,我接到长沙一家做工程机械配件的老张的电话,声音都在抖:“我的官网突然弹出来博彩广告,后台也被锁了,客户投诉电话打爆了,怎么办?” 我让他别慌,先截图。这种 网站被黑挂马… · 2026/9/26 23:45:58

LLM智能体可观测性实战:基于OpenTelemetry的AgentTrace追踪与脱敏方案
LLM智能体可观测性实战:基于OpenTelemetry的AgentTrace追踪与脱敏方案

1. 为什么LLM智能体需要一台"行车记录仪"1.1 从一次线上事故说起去年年底我帮一个团队排查他们客服智能体的"胡言乱语"问题。现象很典型:用户问退款政策,智能体先查了订单库,又调了知识库检索,最后给出的答案… · 2026/9/26 23:45:52

RTX 3080 20G 的 CUDA 兼容性 / 新驱动还能不能正常跑本地模型?
RTX 3080 20G 的 CUDA 兼容性 / 新驱动还能不能正常跑本地模型?

RTX 3080 20G 属于改显存版本,判断它能不能跑本地模型,关键不在显存大小,而在两件事:驱动是否认得出这张卡,以及驱动暴露的 CUDA 支持上限是否不低于框架编译时用的版本。多数情况下,只要 nvidia-smi 能稳定… · 2026/9/27 5:52:39

网络编程:UDP协议
网络编程:UDP协议

一、是什么 UDP(User Datagram Protocol,用户数据报协议)是一种简单的、无连接的传输层协议,用于在网络中传输数据。 与 TCP 不同,UDP 不提供可靠性、顺序性和流量控制,但它具有低延迟和高效的特点&#xf… · 2026/9/27 5:52:15

做网站都需要买什么问题避坑指南与性能优化实战
做网站都需要买什么问题避坑指南与性能优化实战

做网站都需要买什么问题避坑指南与性能优化实战 找建站公司最怕什么?怕被忽悠多花冤枉钱,更怕花了钱做出来的网站打开像蜗牛,客户还没看内容就关了页面。很多老板问“做网站都需要买什么问题”,其实核心就是两件事:一是别买没用的服务,二是买对能保性能… · 2026/9/27 5:52:15

C语言学习之始
C语言学习之始

1.自我介绍2.编程目标3.学习方法4.学习期限5.想进入的IT公司1.自我介绍我是一名通信工程专业的普通学生,之前发布过一个有关数学建模的文章,感兴趣的可以去看看了解一下。目前才刚刚接触c语言,我希望能够在学习c语言的同时利用博客来记录和分… · 2026/9/27 5:51:51

5.5 教学辅助
5.5 教学辅助

教师的工作时间很大一部分消耗在非教学本身的事务上,例如备课、出题、写评语、准备家长会发言等。这些内容有模式可循,但每次都需要从头来过,消耗大量时间和精力。大模型可以帮教师快速完成这些有规律的文字工作,把更多时间留给真… · 2026/9/27 5:51:45

扩散模型图像恢复实战:DDPM原理、代码实现与踩坑指南
扩散模型图像恢复实战:DDPM原理、代码实现与踩坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 5:51:38

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码