
Progress.js vs nprogress主流JS进度条库对比与选型指南【免费下载链接】progress.jsProgressJs is a JavaScript and CSS3 library which help developers to create and manage progress bar for every objects on the page.项目地址: https://gitcode.com/gh_mirrors/pr/progress.js做前端开发时进度条几乎是每个项目的标配文件上传、页面加载、长任务等待……这时候你大概率会听到两个名字nprogress和Progress.js。它们都是极轻量级的 JS 进度条库但设计思路完全不同。本文带你快速搞懂Progress.js——一个帮助开发者为页面中任意元素创建和管理 CSS3 进度条的 JavaScript 库——并和 nprogress 做一次逐项对比帮你 5 分钟完成选型。 先认识一下 Progress.jsProgress.js是一个基于 JavaScript CSS3 的进度条管理库最大特点是进度条不是只能贴在页面顶部而是可以贴在页面上任何一个元素上。比如上传组件正在传文件你想让进度条就浮在上传按钮上方或者某个卡片正在加载数据想让进度条盖在这个卡片上——Progress.js 都能做到而且多个元素可以同时各有一条独立的进度条。项目核心文件很小结构一目了然主库源码src/progress.js样式与主题src/progressjs.css生产环境压缩版minified/progress.min.js 和 minified/progressjs.min.css使用说明README.md整个库零依赖压缩后只有几 KB支持 CommonJS、AMD 和浏览器全局变量三种加载方式见 src/progress.js#L9-L20。⚖️ Progress.js vs nprogress核心差异一览对比维度Progress.jsnprogress进度条位置页面任意元素上支持多条并存固定页面顶部全局一条进度控制set精确设置、increase增量、autoIncrease定时自增set/inc但默认是模拟进度视觉主题内置 6 套 CSS3 主题可换模板单条样式自定义主要靠改 CSS遮罩模式支持overlayMode覆盖整个元素无回调事件onprogress/onbeforestart/onbeforeendonDone等少量钩子体积/依赖几 KB、零依赖、MIT约 3 KB、零依赖、MIT一句话总结nprogress 是全局氛围条Progress.js 是元素级进度条。 逐个功能细看1️⃣ 目标元素任意元素 vs 顶部全局条nprogress 的经典效果是页面顶部那根细长的进度条Google 首页同款适合 SPA 路由切换时给个正在加载的氛围感。但它的进度条只能是全局那一条。Progress.js 则通过一个简单的入口函数选择目标不传参数就是整页body传选择器字符串就定位到具体元素实现见 src/progress.js#L459-L476。比如给某个上传卡片单独加进度条progressJs(#uploadCard).start();对 body 元素它会使用fixed定位跟随视口对其他元素使用absolute精确定位见 src/progress.js#L97-L101窗口缩放时宽度会自动跟随。2️⃣ 进度控制真实进度 vs 模拟进度nprogress 的inc()本质是往前推一点你不知道现在到底 60% 还是 80%它擅长的是不确定时长的模糊反馈。Progress.js 提供了一整套确定性 API见 src/progress.js#L522-L545start()创建并启动进度条set(60)直接设定到 60%increase(10)在当前基础上加 10%autoIncrease(5, 500)每 500 毫秒自动增加 5%end()补满到 100% 后优雅退场kill()立即移除链式回调onprogress、onbeforestart、onbeforeend方便与业务逻辑联动上传文件这种我知道真实进度的场景Progress.js 明显更合适。3️⃣ 外观主题内置 6 套换模板只需一行Progress.js 的样式集中在 src/progressjs.css内置blue、blueOverlay、blueOverlayRadius、blueOverlayRadiusHalfOpacity、blueOverlayRadiusWithPercentBar、blackRadiusInputs6 套主题覆盖了细线条、整块遮罩、圆角、半透明遮罩、带百分比数字等风格。切换主题只需调用setOptionprogressJs().setOption(theme, blueOverlayRadius).start();nprogress 想换外观则基本要自己写 CSS 覆盖默认类。 三种典型场景该怎么选你的场景推荐理由SPA 路由切换、整页加载的氛围反馈nprogress顶部全局条就是为这种不确定时长场景而生文件上传、任务处理等有真实进度的功能Progress.jsset/increase精确可控需要多个元素各自独立显示进度列表、卡片、上传按钮Progress.jsnprogress 做不到多条并存想加遮罩盖住整个组件的加载效果Progress.js内置overlayMode 遮罩主题简单决策口诀全局氛围感选 nprogress元素级、真实进度选 Progress.js。如果项目里两者都要用它们互不冲突完全可以共存。 30 秒上手 Progress.js在页面引入库文件生产环境建议用 minified 目录下的压缩版link relstylesheet hrefminified/progressjs.min.css script srcminified/progress.min.js/script调用 API完整用法见 README.md// 整页进度条 progressJs().start(); // 或者指定元素并精确控制进度 var bar progressJs(#uploadBtn).start(); bar.set(40); bar.increase(15); bar.end(); // 完成后自动补满并退场构建方面仓库提供了 Makefile安装依赖后执行make build即可重新压缩静态资源。 总结Progress.js进度条可以贴在任意元素上、支持多条独立进度、精确控制真实百分比、内置多套主题适合上传/任务类需要真进度的功能场景nprogress顶部全局氛围条的标杆写法极简适合 SPA 路由切换等模糊加载场景两者都是零依赖、MIT 协议的轻量库体积差异可以忽略——选型关键不是哪个更好而是你的进度条该出现在哪里、进度是否已知。希望这份对比能帮你少走弯路。如果项目同时存在两类需求直接把两个库组合起来用就是最务实的答案。【免费下载链接】progress.jsProgressJs is a JavaScript and CSS3 library which help developers to create and manage progress bar for every objects on the page.项目地址: https://gitcode.com/gh_mirrors/pr/progress.js创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考