1. jQuery
jQuery 是 现代 JavaScript 库的鼻祖,因其跨浏览器的支持、简单的 DOM 操作 和简洁的语法而深受用户喜爱。不过,2025 年的 jQuery 就该退出历史舞台了。原生 JavaScript API、React、Vue,以及 Angular 等现代框架已经淘汰了 jQuery 的核心功能。
更不用说,JavaScript 现在也涵盖了诸如 querySelector、addEventListener,以及 fetch 等原生方法,这些功能在之前我们都是要靠 jQuery 提供的。此外,现代的浏览器也都实现了标准化,因此 jQuery 所提供的跨浏览器解决方案现在看来就显得多余。更何况现在还想将 jQuery 捆绑到应用程序中只会增加不必要的臃肿,在如今速度至上的环境中给应用的加载时间降速。
如果现在你还在依赖 jQuery,不妨考虑过渡到模块化、框架解决方案,或干脆重构代码到原生的 JS 方法。做出的改变虽然巨大,但会让你的代码更加简洁、快速,也更易于维护。
2. Moment.js
在很长一段时间里,Moment.js 都是默认的日期处理库,其解析、验证、操作和显示日期的能力备受称赞。然而,和新生代替代品相比,Moment.js 现在显得不仅笨重不灵活,更是已经被弃用。Moment.js 最小也要有 66 KB,这个大小在现如今包越小速度越快、用户体验越好的时代,已经是很大的负载了。
同类型的替代品推荐使用 date-fns 或 luxon,这二者都提供模块化导入,意味着我们只需要导入自己需要的内容,从而大幅减少捆绑包的大小。
JavaScript 的 Temporal API 更是在不断发展,现在已经可以直接处理日期和时间相关的任务,提供了更为高效的解决方案,还无需依赖第三方库。这可以说是建议开始从 Moment.js 迁移的标志了。
3. Lodash
Lodash 是一个全能实用程序库,曾经几乎是所有 JavaScript 项目中的主力工具。它提供了许多实用工具,简化了从深度对象克隆到数组操作等一系列操作。不过,Lodash 中提供的许多功能现在要么变成了 JavaScript 原生功能,要么是可以用简洁的代码轻松实现。
在 ES6 及之后的版本中,Object.assign()、展开运算符和数组方法等功能都在很大程度上减少了对 Lodash 的需求。此外,Lodash 库本身也不算小,只导入其中一个函数就能给项目带来大量额外的开销。
开发者可以考虑使用 ES6 及以上版本中的等价函数替换 Lodash 函数,从而减少对 Lodash 的需求。对于一些 Lodash 中独特便利的少数边缘情况,模块化导入(import { cloneDeep } from 'lodash/cloneDeep')可以最大限度地减少 Lodash 对捆绑包大小的影响。
4. Underscore.js
Underscore.js 作为 Lodash 的前身,多年以来一直在其他功能更为丰富的兄弟库的光芒下苟延残喘,也是时候和它彻底说再见了。
和 Lodash 境况类似,Underscore 中的方法要么已经在 JavaScript 中得到了原生支持,要么就是可以通过更小的库或简单的函数更为有效地实现。现在还在使用 Underscore.js 的话,不仅是没享受到 ES6+ 中无法处理的功能实现,还给自己的项目增加了不必要的负担。
从 Underscore 中迁移到 ES6+ 对性能和可维护性来说都是赢,没理由在 2025 年还守着它不放。
5. RequireJS
在 ES6 的模块化出现之前,RequireJS 是帮助 JavaScript 管理依赖的一把好手。它的异步模块管理(AMD)允许了更为高效的加载,帮助开发者在原生功能出现之前以模块化的方式管理脚本。
不过,随着 ES6 模块的出现和现代浏览器的广泛支持,ReuqireJS 已经有些多余。ES6 提供了一种更为简洁和标准化的模块导入导出方式,让 RequireJS 所带来的额外复杂性变得没有必要。
Webpack、Vite 和 Rollup 等常见捆绑工具也提供了处理依赖性管理的简化方法,更进一步取代了 RequireJS。此外,云自动化工具往往都和这些现代化的捆绑工具相互利用,提供无缝部署和扩展功能。
项目中的 RequireJS 是时候经历现代化改革了,将模块转换为 ES6 语法,依靠 Webpack 甚至是本地模块加载等工具,让代码库面向未来前进。