前端架构: 实现脚手架终端UI样式之ANSI escape code, Chalk, Ora介绍

另类的终端输出:ANSI Escape code介绍 平时使用的时候在命令行终端中的内容通常会是黑底白字,但是有的时候我们会看到一些写的好的命令行工具,它们会输出各种的颜色的提示信息,尤其是绿色的Success与红色的Failed, 这对我们了解程序运行状态来说,有着很好的帮助。 这些特殊的符号到底是什么呢?终端中输出的有颜色的符号又是怎样设置的?本文让我们来一起认识一下:ANSI转义代码(ansi escape code)。 阅读详情

在脚手架当中实现命令行的UI显示


1 )概述

  • 在命令行中,如果想实现除传统的常规文本以外的内容
  • 比如想对字体进行加粗斜体下划线,包括对它改变颜色改变前景色改变后景色等等
  • 需要借助一个叫做 ANSI escape code 这样的一个概念
  • 它其实是一个标准,它可以用来控制光标的位置
  • 它可以改变自己的颜色,可以改变它的字体,以及它的样式
  • 所以 ANSI escape code 这个内容对后续开发非常重要
  • 常用的基于这个 ANSI escape code 封装的两个库
  • 这两个核心库分别是 chalk 和 ora

2 ) 关于 ANSI escape code

  • 文档:https://handwiki.org/wiki/ANSI_escape_code
  • 终端 ANSI 转义序列,简单的来说,它就是定义的一个规范
  • 这个规范可以让我们在终端当中通过转义字符实现一些特殊操作
  • 比如我们可以将光标上移或者下移左移或者右移,还可以换行等等这些操作
  • 甚至还可以把当前输出的这些信息给擦除掉,同时可以实现什么字体的一个变化
  • 比如:加粗,下划线,倾斜等等,会有一些字体的样式变化了
  • 最后最重要的是给字体变颜色,变成各种各样的颜色
  • 由于终端中,它会受到一定的限制,所以并不能识别所有的颜色
  • 具体查询文档:

repl环境使用示例

  • 在终端中使用nodejs执行或在浏览器console面板执行均可

2.1 改变字体颜色(前景红色) \x1B[31m

console.log('\x1B[31m%s', 'Hello ANSI escape code')
  • 这里,\x1B 是固定写法, x表示16进制数
  • 这个数值,可以在文档上查询,红色中: 31 是前景色,41 是背景色
  • 这里的 m 在 上述 CSI 文档中查询显示是渲染的参数,在数字后面加上m,因为都是渲染属性
案例效果

2.2 改变背景色(还是红色) \x1B[41m

console.log('\x1B[41m%s', 'Hello ANSI escape code')
案例效果
  • 这里,调用后,nodejs终端环境不会再次恢复,如果需要恢复,\x1B[0m
    console.log('\x1B[41m%s\x1B[0m', 'Hello ANSI escape code')
    
案例效果

2.3 添加下划线 \x1B[4m

console.log('\x1B[41m\x1B[4m%s\x1B[0m', 'Hello ANSI escape code')
案例效果

2.4 改变光标下移 \x1B[2B

console.log('\x1B[2B%s', '光标下移')
  • 希望当前位移,就需要找到位移属性,在 CSI 表中查询,Cursor Down是 B
  • 这里的2是下移2行,这个在终端中可用,在浏览器console面板中无效
案例效果

2.5 水平移动 \x1B[2G

console.log('\x1B[2G%s', '水平移动')
  • 2是2列的意思
案例效果

2.6 其他

  • 后续依次类推,可以在文档中查询使用,了解到这个程度,加上查询文档即可应付后续脚手架开发需求
  • 在实际开发过程中,绝大部分情况下,是不太需要自己写 ANCI 序列的,除非你的需求很特殊
  • 但是了解了这个实现原理以后,有助于以后想用的时候可以用的起来

3 )chalk

  • chalk 主要的用途是改变文本的颜色,它主要是改变文本当中中命令行中文本的一个样式
  • 可以改变各种各样的颜色,可以加下划线,有粗体,有斜体等各种样式,可以改前景色也可改背景色
  • 可以看到它一周的下载量达到惊人的两亿多(228,575,311 动态数据),可见这个库的使用是非常广泛

4 )ora

  • 这个 ora 这个库最主要是用来做 loading 状态加载的
  • 比如,完成一个下载的动作,比如,等待一个 webpack 打包
  • 都需要使用这个库来给我们去做loading的一个渲染
  • 这个库使可以看到一周下载量达到一千多万次(18,244,955 动态数据),是一个非常大的库
  • 它关联的一个叫做 cli-spinners 用来做这个loading状态物料的一个管理
  • 这个 ora 库底层源码会比 chalk 要复杂一些,因为它涉及到很多命令行更底层的信息
  • 比如说对游标的控制,对输入输出流的控制等
ANSI 转义序列使用 - 定义终端打印字体的属性(颜色、粗体、斜体、背景等) ANSI 转义序列是一种用于在控制台中输出格式化文本的标准。它由一系列以 ESC(ASCII 码 27)开头的字符组成,后跟一个或多个参数和一个字母,以指示需要执行的操作。ANSI 转义序列最初是为了在终端上输出彩色文本而设计的,但它们也可以用于设置文本样式、移动光标等。其中,\033 表示 ESC,等表示参数,表示指令字母。指令字母操作m设置文本属性H设置光标位置J清除屏幕K清除行s保存光标位置u恢复光标位置在参数中,分号用于分隔不同的参数。参数意义0。 阅读详情

相关推荐

用TypeScript+Bun+Ink打造本地Claude代码助手

TypeScript已成为AI工程化开发的事实标准,其类型系统能显著提升大模型API集成的健壮性与可维护性;Bun作为新兴JavaScript运行时,凭借Zig实现的极致启动速度和内置工具链,正重塑前端本地开发体验;Ink则填补了终端交互式AI应用的空白,让CLI具备媲美GUI的响应式能力。这些技术组合不仅规避了传统Node.js生态的性能瓶颈与配置复杂度,更支撑起流式SSE响应、会话持久化、跨平台终端渲染等关键能力,广泛应用于本地代码解释、上下文感知问答与轻量IDE插件等场景。本文即基于这三大核心技术栈,

weixin_34025051的博客 299

ANSI转义代码(ansi escape code)

在命令行终端中的内容通常会是黑底白字,但是有的时候我们会看到一些写的好的命令行工具,它们会输出各种的颜色的提示信息,尤其是绿色的Success与红色的Failed, 这对我们了解程序运行状态来说,有着很好的帮助。你可能也会好奇它们是怎么实现的,本文想要说明的就是这个问题。

phoenix_wangxd的博客 3457

PowerShell : 如何设置输出颜色,Format-Color让黑乎乎的窗口丰富起来

控制台中是如何输出不同颜色内容的,以及在PowerShell中如何科学的设置字体颜色,本文将一 一道来。

码农杰克 1万+

通过Ansi Escape Codes酷炫玩转命令行!

引言你是否: 好奇过命令行里那些花里胡哨的进度条是如何实现的? 好奇过Spring Boot为什么能够打印五颜六色的日志? 好奇过Python或者PHP等脚本语言的交互式命令行是如何实现的? 好奇过Vim或者Emacs等在Terminal中的编辑器是怎么实现的? 如果你曾经好奇过,或者被这段话勾起了你的好奇心,那么你绝对不能错过这篇文章! 背景通过本文你可以学到: 何为Ansi Escape...

weixin_34163553的博客 799

prokka-原核及病毒基因组高效便捷注释

文章目录简介安装使用参考 简介 Prokka: rapid prokaryotic genome annotation 全基因组注释是在一组基因组DNA序列中识别感兴趣的特征,并用有用的信息标记它们的过程。Prokka是一款软件工具,可以快速注释细菌、古生菌和病毒基因组,并生成符合标准的输出文件。 安装 conda install -c conda-forge -c bioconda -c defaults prokka Test Type prokka and it should output its

Neptuneyut的博客 3313

JavaScript性能优化:全链路性能优化策略

JavaScript性能优化是提升Web应用质量的核心要素,直接影响用户体验与业务成果。研究表明,页面加载延迟1秒可能导致转化率下降7%。高效的JavaScript执行能减少主线程阻塞,避免动画卡顿或操作延迟,尤其在移动端低性能设备上更为关键。优化内存管理与减少冗余计算可降低浏览器资源消耗,防止因内存泄漏导致的崩溃,提升应用稳定性。在竞争激烈的互联网环境中,性能优势已成为产品差异化的关键因素,直接影响用户留存与商业价值。因此,性能优化应作为开发全周期的核心实践,而非事后补救措施。

weixin_49707375的博客 1274

ANSI escape code

ANSI转义序列是带信号的标准编码,用于控制视频文本终端和终端模拟器上的光标位置、颜色、字体样式和其他选项。这些字节序列(大多数以ASCII转义字符和括号字符开头)会嵌入到文本中。终端将这些序列解释为命令,而不是逐字显示的文本(这就导致在终端交互时看不到这些,但采用一些收集脚本收集这些终端的命令反馈时,收集回来的数据中会看到大量这些编码)。 控制字符 C0 Hex 字符 描述 \x00 \0 Null \x05 ENQ 触发应答消息 \x07 \

lwn556u5ut的博客 1298

开放词汇目标检测(Open-Vocabulary Object Detection, OVOD)综述

综上,大多数工作均基于CLIP预训练的图像编码器和文本编码器。GlIP为解决目标检测任务提供了先例,后续很多工作常与目前较为广泛使用的目标检测网络结构相结合,从而构建新的开放词汇目标检测器。如ViLD基于Mask R-CNN、RegionCLIP基于R-CNN、VLDet和BARON基于Faster R-CNN。更具有创新性的工作是Detic,提出了使用图像分类的数据集来对目标检测器的分类头进行训练。

yangsn0719的博客 4403

命令行应用开发初学者指南:脚手架篇、UI 库和交互工具

本篇文章介绍了几个常用的命令行工具和库,帮助开发者构建功能丰富、用户友好的命令行应用。主要内容包括:脚手架框架(yargs 和 commander)、命令行输出美化(ANSI Escape 规范、chalk、ora)、交互式命令行(inquirer)。

开心学前端 : ) 1522

Sigrity PowerDCPackage ThermalCharacterization模式提取封装基板热阻参数-Single-Die Package DELPHI compact Thermal

DIE(定义DIE的参数):material设置为silicon(硅),Attach material(贴片的材料,设置为Die Attach),Attach thickness(贴片的材料的厚度,厚度设置为0.001mm,点击ok。Cap为覆盖材料,Material定义材料类型,thickness定义厚度,length和width定义长宽,Adhesive Material为胶的材料,Adhesive Material为胶的厚度,本例不定义,跳过即可。

weixin_54787054的博客 363

[自动化工具] 解放双手的利器:「自动邮件平台」工具助你高效搞定重复通知任务

摘要:自动邮件平台是一款零门槛自动化工具,帮助用户高效处理重复性邮件任务。该平台支持两种调度模式(指定日期和间隔天数),无需编码即可快速设置账单提醒、活动通知等任务。提供免费托管版(小时级调度)和自主部署版(分钟级调度),满足不同精度需求。典型应用场景包括客户跟进、系统监控等周期性任务。用户只需三步即可完成设置,还能扩展定制化功能。该工具让非技术人员也能轻松实现邮件自动化,释放时间专注更重要的工作。

每日出拳老爷子的博客 111

Node.js CLI 加载指示器实战:用 ora 提升终端交互体验

命令行加载指示器(throbber)是 CLI 工具中提升用户感知响应性的基础交互组件,其核心原理是通过 ANSI 转义序列与回车符(\r)实现单行状态覆盖刷新。在 Node.js 生态中,ora 作为轻量、稳定、开箱即用的工业级方案,不仅封装了终端兼容性(TTY 检测、CI 降级、颜色适配)、中断清理与嵌套管理等底层细节,更将‘状态反馈’这一人机交互常识转化为可复用的工程实践。它广泛应用于 npm 脚本、部署工具、构建流程等场景,显著降低用户因‘黑盒等待’导致的误中断率,并支撑错误上下文定位、渐进式日志协

weixin_33827590的博客 348

Allegro格式PCB转换成Pads操作指导

变量:AEX_BIN_ROOT 值:D: MentorGraphics>PADSVX1.2>SDD_HOME>translators>win32bin (值:软件按装的位置,可以是9.5版本,也可以是VX1.0等不同的版本)。变量:HOME 值:C:Users>win7>AppData>Roaming>SPB_Data (这个值是allegro快捷键存放位置器,也可以随意放置在那个盘,我们可以采用默认的路径)。第4步:打开 PADSLayout软件,然后选择导入文件,选择刚刚处理的 allegro文件。

weixin_54787054的博客 3721

推荐给初入web前端几种常用的设计框架

1 Bootstrap      Boostrap绝对是目前最流行用得最广泛的一款框架。它是一套优美,直观并且给力的web设计工具包,可以用来开发跨浏览器兼容并且美观大气的页面。它提供了很多流行的样式简洁的UI组件,栅格系统以及一些常用的JavaScript插件      Bootstrap是用动态语言LESS(LESS是一种由Alexis Sellier设计的动态层叠样式表语言)写的

lsh1063643823的博客 562

ISO 21434汽车网络安全标准深度解读系列(十):标准实施总结与展望

ISO21434标准深度解读系列总结篇系统回顾了汽车网络安全标准的核心内容与实施要点。文章梳理了10篇系列文章的结构体系,提炼出标准的三大核心价值:系统性方法(全生命周期覆盖、多层次管理)、风险导向理念(威胁驱动、动态管理)和供应链协同机制。总结了实施经验中的关键要素,包括高层承诺、专业团队建设,并提出了分阶段实施路径建议。同时分析了当前面临的技术挑战(系统复杂性、新兴技术)和管理挑战(文化转变、资源投入)。最后展望了AI应用、零信任架构等技术发展趋势,以及标准未来的演进方向,为企业实施提供战略与执行层面的

VehSwHwDeveloper的博客 562

【使用DeepSeek辅助Python接口性能自动化测试教程-实战教程】

访问DeepSeek官方网站,注册账号并获取API Key。此Key是调用DeepSeek API的必要凭证,务必妥善保管。安装时,注意勾选“Add Python to PATH”选项,以便系统能识别Python命令。确保你已安装Python 3.8或更高版本。会自动发现并执行所有以。

Dreams°的博客 2468

ANSI 转义序列学习笔记

ANSI 转义序列是由一系列以\e[开头、以字母和数字组成的字符序列组成的。在大多数终端程序中,我们可以用\e或\033来表示转义字符。这些转义序列告诉终端应该如何处理文本输出,比如改变文本颜色、样式、光标位置等。通过插入这些特殊的转义序列,我们可以实现在终端中进行更加丰富和个性化的输出。ANSI 转义序列是一种用于控制终端输出和显示的标准化方式。本篇博客介绍了 ANSI 转义序列的基本语法和常见的控制命令,包括文本样式控制、光标控制和清屏操作。

m0_72410588的博客 1630

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

ANSI Escape Codes 项目常见问题解决方案

ANSI Escape Codes 项目常见问题解决方案 1. 项目基础介绍和主要编程语言 ansi-escapes 是一个开源项目,它提供了一系列的 ANSI 转义码,这些转义码可以用来控制终端的行为,如移动光标位置、清除屏幕等。这个项目主要是用 JavaScript 编写的,可以方便地在 Node.js 环境中使用,同时也支持在浏览器端通过 Xterm.js 使用。 2. 新手常见问题及解决步...

gitblog_00580的博客 452

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

ansi-escapes 使用教程

ansi-escapes 使用教程 项目介绍 ansi-escapes 是一个用于生成 ANSI 转义序列的 Node.js 库。ANSI 转义序列是一种在终端中控制光标位置、颜色和其他选项的标准方法。这个库提供了简单易用的 API,使得在终端中进行复杂的文本操作变得非常方便。 项目快速启动 安装 首先,你需要安装 ansi-escapes 库。你可以使用 npm 或 yarn 进行安装: npm...

gitblog_00476的博客 669

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

commander、ora、chalk、inquirer使用

效果 上代码 #! /usr/bin/env node const {program} = require('commander') const {version} = require('../package.json') // cnpm i commander -D /** * 当前我们需要做的就是将多个自定义命令的信息用一种数据格式保存起来 * 因为这些个命令的信息将来肯定都需要被使用到,因此这个存储的格式应该是可迭代 * 这里我们就选择对象 */ // 存储自定义的命令信息 const a

woyebuzhidao321的博客 1072

终端字体,颜色,背景,光标,屏幕等样式 ANSI Esc \033, \x1B, \e 转义序列用法

ANSI 转义序列Esc(\033, \x1B, \e)是个特殊转义字符,它可以在终端控制光标,改变字体颜色和背景,设置屏幕或者使用私有模式来改变终端样式,使终端样式更美观,功能更多

Linux,C/C++和硬件开发 3380

linux怎么显示2种颜色,转义序列Escape Sequences及Linux echo命令多种颜色显示

翻阅了很多中文的博文,多数文章是讲echo颜色的用法,本人实在不爱死背,追本溯源,真正看看转义序列是什么?转义字符,学习过C语言的童鞋都知道,著名的printf函数中支持一些控制字符输出,例如\t 、\n等。我们通常称它们为转义字符。一、转义序列是什么?1、维基百科(译者怕翻译偏差大,保留原文)In computing, ANSI escape code (or escape sequences)...

weixin_31899235的博客 583

java 反显_Node.js控制台彩色输出的方法与原理实例详解

前言我们都知道,在nodejs环境下使用普通的console.log,console.error,console.info输出都是不会有颜色的,如果你不知道,那你现在知道啦????。在这种情况下,如果我们需要彩色输出,则通常通过chalk这个node模块来实现,chalk使用方法基本用法const chalk = require('chalk')console.log(chalk.red.bold.bg...

weixin_29044157的博客 370

App-Store-Connect-CLI 的 Agent 协作开发规范:Skill 体系、权威模型与验证门禁全解读

AGENTS.md 是本仓库面向 Agent(以及人工维护者)的"总章程":它定义了 App-Store-Connect-CLI(二进制名 `asc`)在开发、审查、合并、发布全流程中的权威边界、代码契约、实现不变量与验证门禁。读完本文,你将掌握这套仓库的 Skill 工作流如何分工、哪些操作默认只读、CLI 命令与 JSON 输出必须遵守哪些契约,以及从 TDD 红绿循环到 `codex` 强制

gitblog_00304的博客 368
上一篇: Gin框架: 使用go-ini配置参数与不同环境下的配置部署
下一篇: 前端架构: 脚手架之Chalk和Chalk-CLI使用教程
Wang's Blog
博客等级 码龄12年 7438粉丝 2421原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值