如何以 JavaScript 形式构建漂亮的终端 UI (TUI)!
我对 TUI 着迷——也许你也是!如果还没有,我希望您会的,因为它们不仅有趣,而且非常有用!
大约两个月前,我将 Lipgloss 从 Go 移植到了 WebAssembly。这是本系列的第一篇文章!我的下一个计划是移植表单,但是长话短说,某些功能无法跳转到 WASM。本机功能和运行时限制带来了障碍,因此我更进一步:DLL 和 SO 文件(共享库)。最后,我们有表格!
注意: 要在 JavaScript 中使用共享库,您需要具有本机模块支持的 Node.js 和用于 C 绑定的 node-gyp。
最简单的方法?重新安装 Node.js 并在安装过程中选择本机模块选项:
更喜欢手动安装?请遵循此自述文件。
为什么是 DLL 和 SO 文件?
与 WASM 相比,它们要小得多,我可能最终会重写所有内容来利用它!
如果您准备好投入使用,请设置一个新的 JavaScript 项目并安装 charsm:
pnpm add charsm
CLI 中的表单
1. 主题定制
要自定义表单的外观,请使用主题:
import { huh } from "charsm"; huh.SetTheme("dracula");
之后定义的所有组件都将使用 Dracula 主题。您可以随时覆盖主题:
huh.SetTheme("dracula"); // Components here use Dracula huh.SetTheme("Catppuccin"); // Components here use Catppuccin // Available themes: default, Charm, Base16, Dracula, Catppuccin
2. 创建确认对话框
一个简单的确认对话框,带有可定制的“是”(肯定)和“否”(否定)按钮:
const m = huh.Confirm("Do you want to proceed?", "Yes", "No");
运行时,它返回“1”表示是,“0”表示否。指向共享库中字符串的指针很容易返回:
if (m.run() === "1") { console.log("User chose the affirmative option"); } else { console.log("User chose the negative option"); }
3. 创建输入字段
示例 1:单输入
使用验证和占位符定义输入字段:
const i = new huh.NewInput( { Title: "Username", Description: "Enter your name", Placeholder: "e.g., John Doe", validators: "no_numbers,required", }, 0 // Mode: Single Input ); i.load(); console.log(i.run());
验证器定义为逗号分隔的字符串。例如,“no_numbers,required”确保输入满足所有条件,然后再继续。
验证者包括:
- 必需的
- 电子邮件
- 没有数字
- 仅阿尔法
- no_special_chars
模式:
- 0:单行输入
- 1:多行文本区域
示例 2:多行输入
pnpm add charsm
4. 创建选择组件
import { huh } from "charsm"; huh.SetTheme("dracula");
5. 添加旋转器
huh.SetTheme("dracula"); // Components here use Dracula huh.SetTheme("Catppuccin"); // Components here use Catppuccin // Available themes: default, Charm, Base16, Dracula, Catppuccin
6. 创建表单
表单可以容纳多个组,并按顺序渲染它们。这是一个例子:
const m = huh.Confirm("Do you want to proceed?", "Yes", "No");
表单中的值存储在每个组件的 value 属性中:
if (m.run() === "1") { console.log("User chose the affirmative option"); } else { console.log("User chose the negative option"); }
Linux 上的表单验证器可能有点问题(我可能跳过了构建更新的 .so 文件 - 哎呀!)。如果您好奇或想伸出援助之手,请查看这些存储库以获取更新 - 或者更好的是,贡献!
魅力:第一期好 – 删除输入中的 load 方法,以便在 huh.NewInput 中自动调用它。
嗯共享库代码:两个好的第一个问题 – 修复不正确的自述文件并添加 macOS 支持的构建文件。
现在,让我们小组讨论一下。您可以创建多个组并将它们传递到一个表单,如下所示:
const i = new huh.NewInput( { Title: "Username", Description: "Enter your name", Placeholder: "e.g., John Doe", validators: "no_numbers,required", }, 0 // Mode: Single Input ); i.load(); console.log(i.run());
当你这样做时,Huh 将以交错的顺序渲染组:
很酷,对吧?强烈感谢 Charm 的神奇工具!这只是冰山一角。我将不断更新和完善这个工具,使其更加有用。
想要一个完整的例子吗?看看建立一个航站楼咖啡店。
想要一些更轻量但与 DLL 相同的精神,请阅读我关于在 Node.js 中加载 Go 进程的文章。
如果您喜欢深入的、不适合博客的内容——想想旨在提升您的开发技能的长篇系列和未经打磨的宝石——在 Substack 上关注我,您也可以在 x 上找到我。
即将发布的关于 Substack 的文章和系列:
- P2P 系列: 构建 Livescribe,一个 Go 语言的开源点对点写作应用程序(桌面和移动设备)。
- 自定义模板引擎:从头开始制作一个。
- 低级 Libuv 服务器: 探索自定义协议和服务器构建。
- Windows Universal 遇见 WebView: 时尚统治。
- RAG 应用程序: 深入研究检索增强生成。
- 自定义 Node.js C/C 模块: 将 Node.js 推向极限。
感谢您的阅读——祝 2025 年美好! ?
以上是如何以 JavaScript 形式构建漂亮的终端 UI (TUI)!的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Python更适合初学者,学习曲线平缓,语法简洁;JavaScript适合前端开发,学习曲线较陡,语法灵活。1.Python语法直观,适用于数据科学和后端开发。2.JavaScript灵活,广泛用于前端和服务器端编程。

JavaScript在Web开发中的主要用途包括客户端交互、表单验证和异步通信。1)通过DOM操作实现动态内容更新和用户交互;2)在用户提交数据前进行客户端验证,提高用户体验;3)通过AJAX技术实现与服务器的无刷新通信。

JavaScript在现实世界中的应用包括前端和后端开发。1)通过构建TODO列表应用展示前端应用,涉及DOM操作和事件处理。2)通过Node.js和Express构建RESTfulAPI展示后端应用。

理解JavaScript引擎内部工作原理对开发者重要,因为它能帮助编写更高效的代码并理解性能瓶颈和优化策略。1)引擎的工作流程包括解析、编译和执行三个阶段;2)执行过程中,引擎会进行动态优化,如内联缓存和隐藏类;3)最佳实践包括避免全局变量、优化循环、使用const和let,以及避免过度使用闭包。

Python和JavaScript在社区、库和资源方面的对比各有优劣。1)Python社区友好,适合初学者,但前端开发资源不如JavaScript丰富。2)Python在数据科学和机器学习库方面强大,JavaScript则在前端开发库和框架上更胜一筹。3)两者的学习资源都丰富,但Python适合从官方文档开始,JavaScript则以MDNWebDocs为佳。选择应基于项目需求和个人兴趣。

Python和JavaScript在开发环境上的选择都很重要。1)Python的开发环境包括PyCharm、JupyterNotebook和Anaconda,适合数据科学和快速原型开发。2)JavaScript的开发环境包括Node.js、VSCode和Webpack,适用于前端和后端开发。根据项目需求选择合适的工具可以提高开发效率和项目成功率。

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。 1)C 用于解析JavaScript源码并生成抽象语法树。 2)C 负责生成和执行字节码。 3)C 实现JIT编译器,在运行时优化和编译热点代码,显着提高JavaScript的执行效率。

Python更适合数据科学和自动化,JavaScript更适合前端和全栈开发。1.Python在数据科学和机器学习中表现出色,使用NumPy、Pandas等库进行数据处理和建模。2.Python在自动化和脚本编写方面简洁高效。3.JavaScript在前端开发中不可或缺,用于构建动态网页和单页面应用。4.JavaScript通过Node.js在后端开发中发挥作用,支持全栈开发。
