Hello,大家好,我是 Sunday。
前端是一个技术变化非常快的领域,随着时间的发展很多在过去盛极一时的库,也将会逐渐推出历史舞台。
那么,今天咱们就来看看过去火爆异常,如今已经接近退出历史舞台的前端库,以及替代它们的全新方案。
1、jQuery
替代方案:Vue、React、原生 JS
如果你是一个老前端,那么一定会知道 jQuery
。作为 github 上 60k star
的库,他解决了当年令所有人都头疼的 浏览器兼容性问题,并且提供了很多简易的语法,用来处理 DOM 操作。
但是,随着老旧浏览器(如:IE)逐渐退出历史舞台,新的浏览器(如:Chrome 和 Firefox)已经逐完善了兼容性的问题。在目前的前端开发中,我们已经 很少 再去关注浏览器兼容性问题了,这就导致 jQueyr 的核心优势不再明显。
同时,伴随着 Vue 、React 这种状态驱动的框架兴起,也让 DOM 操作大大减少,而全部改为 数据驱动视图 的方案。
因此,jQuery 在现代的前端开发中,应用场景已经变得越来越少了。
2、Backbone.js
替代方案:Vue、React
和 jQuery 同一时期的活跃框架,也是现在 SPA 单页应用 的早期实现。在当年那可是代表前端的前沿技术的框架。
不过,随着前端占比越来越重,Backbone 最初的轻量化设计已经无法满足日益复杂的前端项目了。再加上 Vue、React 的兴起,导致目前 Backbone 已经很少出现在现代项目中了。
3、Lodash/Underscore
替代方案:ES6+
Underscore 大家可能不是很熟悉,但是说起 Lodash
我相信很多同学一定是知道的。而 Underscore 正是 Lodash 的前身。
在 ES6 之前的时代里,JS 的很多 API 并不完善,哪怕是一个简单的 filter
,JS 都没有提供原生支持。因此,很多我们就迫切需要一个可以提供更多、更完善 API 的库,Lodash 就应运而生了。
但是,随着 JavaScript 的发展,ES6+ 中内置了许多原生方法(如 Array.map、Object.keys 等),已经能够满足绝大多数日常需求。
所以,我们对 Lodash 的需要就逐渐降低了。虽然现在 Lodash 仍然在很多项目中被引入,但其黄金时代已经过去。
4、Moment.js
替代方案:Day.js、Temporal(提案)
Moment.js 是一个时间处理的标准库,它提供了很多:日期格式化、时间差计算等方法。
但是,Monent 的整体体积过大,导致会对整个项目的体积产生较大影响。
因此,就出现了 Monent 的替代品 dayjs
主打的就是 轻量化。目前加上 TC39 提出的 Temporal 提案 为日期时间处理提供了标准化的解决方案,Moment 也正在逐渐退出历史舞台。
5、RequireJS
替代方案:ES Modules、Webpack、Vite
说起前端模块化,大家想到的应该都是 ESM、CJS
这两种方案。
但是,在这两种方案之前,前端领域中其实活跃过很多的模块化方案,比如:AMD
。而 RequireJS 就是 AMD 的具体实践。
只不过,随着 ESM 的引入,模块化逐渐标准化。再加上 Webpack、Vite 等现代工具链进一步简化了模块打包的流程。RequireJS 几乎完全退出历史舞台了
6、Grunt/Gulp
替代方案:Webpack、Vite
比 jQuery
还老牌,听说过 Grunt
和 Gulp
的绝对当得起一声 “老前端” 了。
这两个东西是 任务自动化工具(简单理解就是:项目打包工具),干一些现在 webpack、Vite 干的事。
最初取代它们的就是 webpack
,不要觉得现在 webpack
都已经很 “落后” 了。在当年 webpack 可是被成为划时代的产品,甚至出现过 webpack 配置工程师 的岗位。
7、Bower
替代方案:npm、Yarn、pnpm
Bower 死于生态。
其实 Bower 和 npm 属于同一时期的竞争产品,并且 Bower 更加专注于前端库的依赖管理,而 npm 则是一个更广泛的包管理工具,能够管理包括前端、后端、工具链在内的所有类型的依赖。
只不过,随着前端的不断发展,模块化和工具链(如:Webpack)的兴起,npm 更大的生态体系,逐渐让它成为管理前端依赖的首选工具。随着 npm 逐渐接管前端生态(npm 包数量),Bower 在 21 年也彻底停止维护了。