haizlin / fe-interview

前端面试每日 3+1,以面试题来驱动学习,提倡每日学习与思考,每天进步一点!每天早上5点纯手工发布面试题(死磕自己,愉悦大家),6000+道前端面试题全面覆盖,HTML/CSS/JavaScript/Vue/React/Nodejs/TypeScript/ECMAScritpt/Webpack/Jquery/小程序/软技能……
http://www.h-camel.com
MIT License
25.52k stars 3.26k forks source link

[webpack] 第2035天 在webpack中,请说说SplitChunksPlugin的原理 #6001

Open haizhilin2013 opened 1 week ago

haizhilin2013 commented 1 week ago

第2035天 在webpack中,请说说SplitChunksPlugin的原理

3+1官网

我也要出题

white10205 commented 1 week ago

SplitChunksPlugin 是 Webpack 中的一个插件,用于将代码拆分成多个块(chunks)。这些块可以在运行时动态加载,从而提高应用程序的性能。

SplitChunksPlugin 的原理基于以下两个主要概念:

代码分割(Code Splitting):代码分割是将代码拆分成多个块的过程。这些块可以在运行时动态加载,从而提高应用程序的性能。例如,你可以将应用程序的代码拆分成多个块,每个块包含一个页面或组件的代码。当用户访问一个页面时,只有该页面的代码块会被加载。

共享模块(Shared Modules):共享模块是多个块之间共享的模块。例如,你可能有一个库(如 React 或 lodash)被多个页面或组件使用。你可以将这些库拆分成一个单独的块,并在需要时动态加载。

SplitChunksPlugin 的配置选项允许你控制如何拆分代码和共享模块。例如,你可以指定最小块大小(minSize),只有大于这个大小的块才会被拆分。你也可以指定最大块大小(maxSize),只有小于这个大小的块才会被拆分。

SplitChunksPlugin 还允许你控制如何共享模块。例如,你可以指定共享模块的最小使用次数(minChunks),只有被使用超过这个次数的模块才会被共享。

总的来说,SplitChunksPlugin 的原理是基于代码分割和共享模块的概念,通过配置选项来控制如何拆分代码和共享模块。

Elylicery commented 1 week ago

SplitChunksPlugin 是用于代码分割和优化的插件。主要作用是将共享模块提取到单独的文件中,以减少重复代码,提高加载效率。

SplitChunksPlugin 的原理

配置选项 chunks: 指定要分割的模块类型(all、async、initial)。 minSize: 生成 chunk 的最小大小。 minChunks: 模块被引用的最小次数。 maxAsyncRequests: 按需加载时的最大并行请求数。 maxInitialRequests: 入口点的最大并行请求数。 automaticNameDelimiter: 文件名的连接符。 cacheGroups: 自定义缓存组,用于指定不同的分割策略。

工作流程

通过 SplitChunksPlugin,可以有效地管理和优化 Webpack 构建过程中的代码分割策略,提高应用的加载性能和用户体验。