▐ 基于 Module Federation 的预编译方案
借助 Webpack 5 的 Module Federation 特性,icejs 2.0 支持将应用的依赖预构建为一个 Module Federation 的 remote 应用,供当前应用进行消费,应用依赖不再编译到一个文件中,以减少 Webpack 对于依赖打包所需的时间。
{
“remoteRuntime”: true
}
通过 Module Federation 预编译的开启,热启动相比 1.x 版本提升明显,并且让热更新时间缩短近 60%。
▐ 使用 SWC 替代 Babel(试验)
swc
利用 rust 大大提升 JavaScript 源码的编译效率,目前已支持大部分 babel 编译的场景。因此 icejs 提供一键开启 swc 编译能力:
{
“swc”: true
}
开启 swc 编译后,除了 babel 被替换以外,默认的压缩器也从 terser 切换至 swc,进一步缩短时间:
开启 swc 编译后,编译速度平均提升 50%,压缩速度提升近 35%。不过 swc 目前对于自定义插件支持还不友好,因此如果强依赖了一些其他 babel 插件,那么 swc 下目前是很难对齐,因此我们也将该项能力标识为「试验性」。目前前端社区对于 swc 越加重视, 飞冰团队也在积极参与 swc 相关方案的讨论,相信在不远的未来我们可以使用 swc 完全替代掉 babel。
更多新特性
▐ 微前端 x ESM
在 icejs 支持 Vite 模式之后,同为飞冰团队开源的微前端框架 icestark 也同步支持了 ESM 规范的微应用,只需要在微应用上配置 loadScriptMode: import
参数即可开启:
&l