什么是 dynamic-dedupe
dynamic-dedupe 是一个可以帮助我们优化代码库的 npm 包,它可以根据运行时上下文动态排除重复的代码。它的作用类似于 Webpack 的 scope hoisting,可以帮助我们在保证功能完整性的前提下减少代码体积,提升页面性能。
安装 dynamic-dedupe
我们可以通过 npm 安装 dynamic-dedupe:
--- ------- -------------- ----------
使用 dynamic-dedupe
- 第一步,我们需要在 webpack 配置文件中引入 dynamic-dedupe:
----- ------------------- - -----------------------------------------
- 第二步,将 dynamic-dedupe 插件加入到 webpack 的插件列表中:
-------- - --- ---------------------- -- ----- ---------- --
这样,webpack 编译时就会自动使用 dynamic-dedupe 插件进行代码优化了。
动态排重原理
dynamic-dedupe 的排重原理是基于 Webpack v4 或更新版本的 optimization.concatenateModules
特性实现的。当一个模块被多次动态引入时,dynamic-dedupe 会将这些引入结果汇总起来,将它们合并成一个模块,然后通过 optimization.concatenateModules
特性进行优化,达到排重的效果。
实战使用 dynamic-dedupe
为了更好地理解 dynamic-dedupe 的使用方法和优化效果,我们来通过一个实例来说明。
假设我们有如下的 Webpack 配置:
-------------- - - ------ - ---- ----------------- -- ------- - --------- ---------------------------- ----- ----------------------- -------- -- ------------- - ------------------- ----- -- -------- - --- ---------------------- -- -
我们的代码库中有两个包,分别是 lodash
和 moment
,我们通过动态引入它们的一个函数实现功能:
---------------- --------- -- - ------------------------------ ---------- ------ -- ------------ -- - ----------------- ----- -------- ----- ------- -------- ----- --- ---------------- -------------- -- - --------------------------------- -- ----- ------- ----- -- ------------ -- - ----------------- ----- -------- ----- ------- -------- ----- ---
我们首次运行 npm run build,得到两个包的代码都被编译到了打包文件中。
接下来,我们修改代码,将 lodash 包的代码进行重复,运行 npm run build。
可以看到,经过 dynamic-dedupe 的处理,lodash 包的代码被排除,打包文件大小减少了约 50KB。
总结
在前端开发中,代码体积越来越受到重视,dynamic-dedupe 可以帮助我们在保证代码功能完整性的前提下,减少代码体积,提升页面性能。学会使用 dynamic-dedupe,可以帮助我们更好地优化代码库。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/84628