在市面上不仅只有Webpack这一个前端构建工具,还有很多优秀的竞品,这一篇文章就准备好好聊聊这些竞品

bqb

目前市面上除了Webpack,还有如下优秀的前端构建工具可供选择:

接下来就准备逐一介绍它们,了解下它们与Webpack的异同

Gulp

首先援引下官方对于它的定义:gulp将开发流程中让人痛苦或耗时的任务自动化,从而减少你所浪费的时间、创造更大价值。官方对于它的特点归纳如下:

Gulp的定位是一个 基于流的自动化构建工具,它将繁琐的工作(js代码压缩、js代码合并等)封装成一个一个task,然后通过pipe的方式依次自动完成我们配置的task,最终实现自动化打包构建的目的

可以看出Gulp执行任务时是需要严格按照我们 定义的顺序 执行的,也就是所谓的 管道操作流程,从而可以严格规范我们的项目打包流程,但是由于它主要是针对多页应用进行打包构建的,所以在这个SPA大行其道的今天,它的声音越来越小也就不足为奇了

Grunt

首先援引下官方对于它的定义:javaScript 世界的构建工具

Grunt跟Gulp的定位是一样的,都是用于 规范前端构建流程,将一些重复工作交给Grunt来处理。只不过Grunt是以 任务 为核心来搭建构建流程,用户定义的任务可以单独执行,也可以组合多个任务串行,具有较高的灵活性

目前Grunt基本已经被淘汰了,但毫无疑问的是Grunt对于前端领域的发展贡献了自己的力量,所以不应该被我们忘记

Esbuild

首先援引下官方对于它的定义:An extremely fast JavaScript bundler,翻译一下它就是一个非常高效的js打包工具,官方对于它的特点归纳如下:

Esbuild的核心卖点就是 ,下面的图展示了它与其他打包工具的速度差异

bg-pic

那它为什么会这么快呢?主要原因有如下几点

Esbuild虽然快,但是并不适合构建web应用,因为它放弃对less、stylus、sass、vue、angular 等资源的支持,放弃 MF、HMR、TS 类型检查等功能。因此它更适合做一些js代码库的打包工具,或者基于它封装更上层的打包工具,如Vite之类

Rollup

首先援引下官方对于它的定义:Rollup 是一个 JavaScript 模块打包器,可以将小块代码编译成大块复杂的代码,例如 library 或应用程序

Rollup 对代码模块使用新的标准化格式,这些标准都包含在 JavaScript 的 ES6 版本中,而不是以前的特殊解决方案,如 CommonJS 和 AMD。ES6 模块可以使你自由、无缝地使用你最喜爱的 library 中那些最有用独立函数,而你的项目不必携带其他未使用的代码。ES6 模块最终还是要由浏览器原生实现,但当前 Rollup 可以使你提前体验

Rollup的定位主要是用于 js库 的打包,像Vue、React、Angular都是用的Rollup进行打包的,它有如下优点

它的缺点如下:

结语

通过这篇文章,我们了解到除了Webpack之外,还有许多优秀的前端构建工具,正是因为有它们,现在的前端圈才能欣欣向荣,百家争鸣。对于我们来说,能根据业务场景正确地选择构建工具是作为一个高级前端的基本素养,所以,加油吧,骚年!