认识
2024年11月17日
一、认识
Webpack
默认会将尽可能多的模块代码打包在一起,一般来说,如果不对产物进行代码分割(或者拆包),全部打包到一个 chunk
中, 优点是能减少最终页面的 HTTP
请求数,但缺点也很明显:
-
页面初始代码包过大,影响首屏渲染性能。也就是说: 首屏加载的代码体积过大,即使是当前页面不需要的代码也会进行加载。
-
无法有效应用浏览器缓存,特别对于
NPM
包这类变动较少的代码,业务代码哪怕改了一行都会导致NPM
包缓存失效。也就是说: 线上缓存复用率极低,改动一行代码即可导致整个bundle
产物缓存失效。
Webpack
提供了多种方式进行 代码分割(Code Splitting
),以优化应用的加载性能。通过代码分割,可以将应用代码按需加载(lazy loading
),减少初始加载时间,提高运行效率。以下是 Webpack
支持的所有代码分割方式:
-
Entry Points
(多入口): 通过配置多个entry
,将应用的不同部分分成独立的入口文件。 -
Dynamic Link Library
(动态链接库) ,简称DLL
: 通过DllPlugin
和DllReferencePlugin
,将依赖分割成动态链接库。 -
Dynamic Imports
(动态导入): 使用动态导入 (import()
),将代码分割为按需加载的模块。这种方式适用于路由级别的分割和按需加载。 -
SplitChunksPlugin
:Webpack
内置的SplitChunksPlugin
,用于分割代码中的公共模块。通过此插件,可以将共享依赖抽取到单独的文件中。