前端打包工具Webpack 5发布,加入模块联邦功能

开源前端打包工具Webpack,在2018年推出Webpack 4,历经将近3年,现在发布了Webpack 5.0.0,官方在这个版本做出了部分破坏性更新,并且为即将到来的功能,进行了一些架构上的重构,官方提到,鼓励用户立即更新,并且回应碰到的问题,他们将会积极的修复。

Webpack 5其中一个破坏性变更,便是删除自动Node.js Polyfill,Polyfill是指那些实例浏览器不支持的原生API程序代码。由于早期Webpack的目标,是要能够在浏览器中,执行大多数的Node.js模块,不过现在模块生态发生变化,许多模块都是以前端为目标开发。

Webpack 4与之前的版本,附带了许多Node.js核心模块的Polyfill,一旦模块使用到了任何核心模块,对应核心模块就会自动激活,虽然Polyfill使撰写Node .js程序变得简单,但官方解释,这样的做法必需要将巨大的Polyfill,添加到程序包(Bundle)中,使得程序包变得肥大,但现在很多情况,并不需要这些Polyfill。

因此官方决定在Webpack 5中,停止自动将Polyfill添加到程序包中,并且专注在前端兼容的模块上,目标是改善无法使用Node.js核心模块的网页平台兼容性。官方呼吁开发者,尽可能使用与前端兼容的模块,必要的时候,可以手动添加Polyfill。

而Webpack 5还加入了一个称为模块联邦(Module Federation)的功能,让多个Webpack程序包能够协同工作。Webpack区分本地端模块和远程模块,本地端模块就是普通模块,为程序代码构建(Build)的一部分,而远程模块则是在执行时,才从容器加载的模块。在Webpack 5中,每个程序代码构建都可充当容器,并且也能把其他程序代码构建当作容器,因此所有程序代码构建都可以从模块所属容器加载模块。

官方解释,从执行时的角度来看,来自不同程序包会拼接成为巨大的连接模块图(Graph),而从开发人员的角度来看,将可以从远程的程序代码构建导入模块,并且以最小程度的限制使用。

发表评论