从零开始创建cli-progress自定义预设:打造独一无二的进度条样式

从零开始创建cli-progress自定义预设:打造独一无二的进度条样式

【免费下载链接】cli-progress :hourglass: easy to use progress-bar for command-line/terminal applications 项目地址: https://gitcode.com/gh_mirrors/cl/cli-progress

在开发命令行应用时,一个直观美观的进度条能极大提升用户体验。cli-progress作为一款轻量级的命令行进度条工具,不仅提供了丰富的预设样式,更支持开发者创建完全自定义的进度条风格。本文将带你一步步打造专属于你的进度条预设,让你的命令行应用脱颖而出。

认识cli-progress预设系统

cli-progress的预设系统位于项目的presets/目录下,通过模块化的方式组织不同风格的进度条配置。系统默认提供了四种预设:legacy、shades_classic、shades_grey和rect,这些预设定义了进度条的外观、字符和格式。

不同预设样式的进度条展示,从左到右分别为legacy、shades_classic、shades_grey和rect

预设本质上是一个包含特定配置属性的JavaScript对象。以presets/rect.js为例,一个基础的预设结构如下:

module.exports = { format: ' {bar}■ {percentage}% | ETA: {eta}s | {value}/{total}', barCompleteChar: '■', barIncompleteChar: ' ' }; 

自定义预设的核心配置项

创建自定义预设前,需要了解cli-progress提供的核心配置选项。这些选项决定了进度条的外观和行为:

进度条格式(format)

格式字符串定义了进度条的整体布局,可包含以下占位符:

  • {bar}: 进度条主体
  • {percentage}: 完成百分比
  • {value}: 当前值
  • {total}: 总值
  • {eta}: 预计剩余时间

进度条字符

  • barCompleteChar: 已完成部分的字符
  • barIncompleteChar: 未完成部分的字符
  • barGlue: 连接完成与未完成部分的字符(可选)

样式增强

  • colors: 为进度条添加颜色(需配合chalk等颜色库)
  • width: 进度条宽度(默认为40)
  • stopOnComplete: 完成后是否停止动画

五步创建自定义预设

1. 创建预设文件

presets/目录下创建新的预设文件,建议使用有意义的名称,如custom-dots.js

2. 定义基础结构

在文件中导出一个包含配置选项的对象:

module.exports = { // 配置选项将在这里定义 }; 

3. 设计进度条格式

设计适合你应用场景的格式字符串。例如,创建一个简洁的点式进度条:

format: 'Progress: {bar} {percentage}% ({value}/{total})', 

4. 选择进度条字符

选择能体现你设计风格的字符。例如,使用点和星号组合:

barCompleteChar: '★', barIncompleteChar: '·', 

5. 添加高级配置(可选)

根据需要添加颜色、宽度等高级配置:

colors: { bar: 'green', percentage: 'yellow' }, width: 50 

应用和测试自定义预设

创建完成后,需要在代码中应用并测试你的自定义预设。可以参考examples/example-presets.js中的方式使用新预设:

const cliProgress = require('../cli-progress'); const customPreset = require('../presets/custom-dots'); // 创建进度条实例 const bar = new cliProgress.SingleBar({}, customPreset); // 启动进度条 bar.start(100, 0); // 更新进度 bar.update(50); // 完成进度条 bar.stop(); 

使用cli-progress创建的多进度条展示,适合同时显示多个任务的进度

分享你的创意预设

创建独特的预设后,你可以通过以下方式与社区分享:

  1. 将你的预设提交到项目的CONTRIBUTE.md
  2. 在examples目录下创建演示文件,展示预设效果
  3. 在项目的docs/events.md中记录你的预设特点

通过自定义预设,你可以让命令行应用的进度展示更加个性化和专业化。无论是简约的文本进度条,还是富有创意的动画效果,cli-progress都能满足你的需求,让你的应用在命令行中脱颖而出。

【免费下载链接】cli-progress :hourglass: easy to use progress-bar for command-line/terminal applications 项目地址: https://gitcode.com/gh_mirrors/cl/cli-progress

Read more

Rust与WebAssembly深度实战——将高性能Rust代码运行在浏览器与Node.js

Rust与WebAssembly深度实战——将高性能Rust代码运行在浏览器与Node.js

Rust与WebAssembly深度实战——将高性能Rust代码运行在浏览器与Node.js 一、学习目标与重点 1.1 学习目标 1. 理解WebAssembly基础:深入掌握WebAssembly(Wasm/Wasmtime)的核心定义、运行机制、与JavaScript的性能对比 2. 掌握Rust到Wasm的编译:熟练使用wasm-pack、cargo-web等工具链,完成Rust代码到Wasm模块的编译、打包、优化 3. 精通Rust与JavaScript交互:实现双向交互(Rust调用JS函数、JS调用Rust函数),处理复杂数据类型(数组、对象、字符串),管理内存(Wasm线性内存的分配与释放) 4. 开发真实Wasm应用:编写浏览器端高性能任务(Canvas图像滤镜、WebGL计算辅助)、Node.js端计算密集型任务(图像处理、加密解密、数据压缩) 5. 优化Wasm模块:使用wasm-opt工具优化Wasm体积,学习代码分割、懒加载、模块缓存

2025年10月21日-OpenSpec 实战:用规范驱动开发破解 AI 编程协作难题

2025年10月21日-OpenSpec 实战:用规范驱动开发破解 AI 编程协作难题

1.前言 OpenSpec 是一种 **规范驱动(spec‑driven)**‍ 的开源开发框架,主要面向 AI 编程助手(如 Claude Code、GitHub Copilot、Cursor 等)而设计。它通过在「共识规范 → AI 执行 → 自动验证」的闭环流程,帮助团队在 AI 参与的代码开发过程中明确需求、降低指令歧义、提升代码可追溯性与可维护性。 核心理念与工作流 1. 共识规范(Spec) * 先由人类与 AI 共同撰写结构化的需求规范(包括功能描述、输入/输出、边界条件、测试用例等)。 2. AI 执行 * AI 根据规范自动生成代码、文档或变更提案。 3. 自动验证

Flutter 三方库 flutter_dropzone 的鸿蒙化适配指南 - 掌握万物皆可拖拽的资源流转技术、助力鸿蒙大屏与 Web 应用构建极致直观的文件导入与交互体系

Flutter 三方库 flutter_dropzone 的鸿蒙化适配指南 - 掌握万物皆可拖拽的资源流转技术、助力鸿蒙大屏与 Web 应用构建极致直观的文件导入与交互体系

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 flutter_dropzone 的鸿蒙化适配指南 - 掌握万物皆可拖拽的资源流转技术、助力鸿蒙大屏与 Web 应用构建极致直观的文件导入与交互体系 前言 在 OpenHarmony 鸿蒙应用全场景覆盖、特别是适配鸿蒙桌面模式(Desktop Mode)、折叠屏大屏交互及鸿蒙 Web 版推送的工程实战中,“文件拖拽(Drag and Drop)”已成为提升生产力效率的标配功能。用户希望能够像在 PC 上一样,直接将图片或文档拖入应用窗口即可完成上传。如何实现这种跨越边界的直观交互?flutter_dropzone 作为一个专注于“拖放区域感知与文件流提取”的库,旨在为鸿蒙开发者提供一套标准的拖放治理方案。本文将详述其在鸿蒙端的实战技法。 一、原原理分析 / 概念介绍 1.1 基础原理 flutter_dropzone

前端如何实现 [记住密码] 功能

前端如何实现 [记住密码] 功能

文章目录 * 一、核心实现原理:不是记住,而是“提示填充” * 二、技术实现方案详解 * 方案一:依赖浏览器原生行为(最常用) * 方案二:前端持久化存储(需谨慎考虑) * 三、安全考量与实践准则 * 四、最佳实践总结 我们在访问网站的时候,发现很多的登录页面都是有记住密码的功能的。 如gitee码云的登录页面: 一、核心实现原理:不是记住,而是“提示填充” 首先要澄清一个常见的误解:前端的“记住密码”功能通常并不直接存储你的密码明文。它的核心原理是:请求浏览器将账号密码保存到其密码管理器中,并在下次检测到对应登录表单时,自动或提示用户填充。 下图清晰地展示了这一核心流程: 服务器浏览器密码管理器登录表单用户服务器浏览器密码管理器登录表单用户首次登录与保存后续自动填充1. 输入账号密码,勾选“记住我”2. 提交表单,发送登录请求3. 返回登录成功响应4. 触发浏览器提示:“是否保存密码?”5. 用户点击“保存”6. 将账号、