【CSDN 萨德基】现如今对每一名后端技师而言,Webpack 早已正式成为几项此基础专业技能,它大体上包揽了邻近地区合作开发、校对填充、流程装箱等组织工作。从那个视角上看,Webpack 的确是了不起的,但即便它这般了不起,也有个非常大的难题,是 Webpack昂西桑县用了。
下列为原文:
Webpack 是现今最盛行的装箱辅助工具众所周知。大批制造插件和架构(比如说Next.js、Create React App 等)的装箱和构筑都选用了 Webpack。除此之外,它还保有最小的插件库,在这点少于了任何人其它同行业辅助工具。不过,自 Webpack 面世年来,黄金时代早已出现了变动,现如今在很多情况下,它已并非最差辅助工具。
为何 Webpack 获得了快速产业发展
Webpack 于 2014 年首度正式发布,彼时的 JavaScript 生态系与那时有非常大的相同。在彼时,Grunt 和 Gulp 在构建辅助工具应用领域占有优势地位,它的高阶插件机能极为齐全,比如说手动正式发布,或校对 Sass 等。很多应用软件都是透过 CDN(Content Delivery Network,文本正式发布互联网)提供更多的。
但是,如果想在邻近地区装箱 npm 应用软件,以在后端代码中使用,而不希望使用托管版本,则需要使用 Browserify。Browserify 的难题在于,尽管它保有插件支持,但比不上 Grunt 或 Gulp 等构筑辅助工具。而 Webpack 将装箱和构筑结合到了一个辅助工具中,降低了配置的难度。
那时的生态系
现如今,市场上出现了很多其它装箱软件,比如说 Rollup、Parcel、Vite 和Snowpack,以及新的原生模块系统 ESM(即 ECMAScript 模块)。这些新的装箱流程具有更简单的配置,我们可以更轻松地添加/创建插件和配置设置,而且一些装箱流程还透过 ESM 实现了超快速的加载,且装箱更小。因此, Webpack 不再是最好的辅助工具。
为何不应该使用 Webpack
3.1 速度慢
在启动合作开发服务器时,Webpack 必须装箱所有模块。因此,服务器的启动速度非常慢,通常需要 2~30 秒,甚至 150 秒才能启动完成。
为了加快启动速度,Parcel 之类的装箱流程使用了缓存,Webpack 在版本5中也实现了缓存,但尚未在所有架构和插件获得和支持,有些装箱流程(比如说 Vite 和 Snowpack)利用原生 ESM 大幅提高了速度,加载时间甚至缩短到了 250 毫秒。
尽管 Webpack 也做了这点的改进,但很难在合作开发模式下添加对 ESM 的支持,而且近期内都不太可能会实现。
3.2 易于配置
众所周知,学习 Webpack 的配置非常困难。你需要一系列的插件完成很多简单的操作(比如说加载 CSS 等),而且配置文件非常复杂。
图:一个简单的Webpack配置文件
很多装箱软件,比如说 Parcel 和 Vite 也支持很多操作,包括上图中的大多数操作,但无需任何人配置文件,并且大多数现代装箱软件的配置语法都非常简单。例如 Create React App 完全可以手动管理,只不过灵活性非常差,随着应用合作开发的进行,很多情况下你不得不“弹出”配置文件(也是说,你需要删除辅助工具自带的配置文件,手动编写)。
3.3 装箱大小
由于 Webpack 需要使用 polyfill 来加载模块,因此它生成的包远远大于其它使用 ESM 和现代 JavaScript 语法的包。
虽然使用 polyfill 可以获得浏览器的支持,但我们也可以利用插件,透过 nomodule 标记来最小化浏览器的支持,同时又可以保持现代浏览器的速度。但是,由于 webpack 当前不支持现代 ESM,因此实现不了这一点。
备选方案
现如今市面上有很多其它装箱软件可供优先选择,它可以帮助你解决上述三个难题或部分难题。
Parcel:部分解决难题1,完全解决难题2;
Rollup:完全解决难题3,部分解决难题1和2;
Vite:完全解决所有3个难题;
Snowpack:完全解决难题1和3,部分解决难题2。
总结
尽管 Webpack 有大批的插件和社区支持,但是从很多方面而言,现如今它算不上是最好的优先选择。就个人而言,我更喜欢 Vite,因为它有效地解决了上述所有难题,不仅配置与 Parcel 一样简单,而且还可以使用 ESM。另外,上面列出的四个装箱流程质量都很高。
原文链接:https://uxdesign.cc/android-1-0-how-does-it-look-today-476cbe74616a
声明:本文由CSDN翻译,转载请注