webpack中分割代码的三种方式

webpack 性能优化方案 - 代码分离(分包) 代码分离概念、Optimization、Prefetch & Preload、CDN 阅读详情


官网教程:code-splitting

最近在开发一个新的功能,需要在某一条件下引入新包,而之前的场景则完全不需要。这种情况下,动态加载+代码分割正可以派上用场。在动手之前,先看看官网是怎么说的吧。

entry - 配置多入口、多页面

在entry对象中写入多个入口文件即可。

weboack.config.js

const path = require('path');

module.exports = {
   
   
  mode: 'development',
  entry: {
   
   
    index: './src/index.js',
    another: './src/another-module.js',
  },
  output: {
   
   
    filename: '[name].bundle.js',
    path: path.resolve(__dirname, 'dist'),
  },
};

这样做的弊端主要由两个。第一,如果有公共的代码块,那么打包之后的两个Bundle里都会包含重复的模块。第二,不够灵活,不能被webpack通过splitChunks的规则灵活地优化。

因此,在entry里直接写多个入口的方式,适用于本身就是多入口的项目,而非一般的spa。可以通过代码结构,用函数构造出合理的entry和相应的htmlwebpackplugin,来进行打包。

splitChunks - 智能抽取公共代码

webpack还给出了智能分割代码的功能:splitChunks,可以用给定的策略去抽取公共代码,避免重复。

webpack.config.js

 optimization: {
   
   
    minimizer: [
      new UglifyJsPlugin({
   
   
        exclude: /\.min\.js$/, // 过滤掉以".min.js"结尾的文件,这个后缀本身就是已经压缩好的代码,没必要进行二次压缩
  
【高频考点精讲】前端工程师必会的10种代码分割优化方案 🧑‍🏫:全栈老李📅:2025 年 6 月🧑‍💻:前端初学者、进阶开发者🚀:本文由全栈老李原创,转载请注明出处。最近在给团队做性能优化复盘时发现,很多同学对代码分割的理解还停留在"Webpack配个splitChunks就完事了"的阶段。这就像拿着瑞士军刀却只会用开瓶器功能,实在暴殄天物。今天全栈老李就带大家解锁代码分割的十种高阶玩法,让你打包出来的代码像乐高积木一样灵活组装。 阅读详情

相关推荐

Webpack代码分割、分割策略&性能优化详解

在前端面试中,Webpack 是一个常见的考察点,特别是关于性能优化、构建配置以及代码分割等方面的问题。以下是 Webpack 常见问题详解,包括 代码分割 相关的内容。Webpack 是一个前端构建工具,主要用于将项目中的各种资源(JavaScript、CSS、图片等)打包成浏览器可以识别的格式。它通过 Loader 和 Plugin 两个机制,支持代码编译、转换、优化等功能。 1.3 Loaders 和 Plugins Loader:Webpack 使用 loader 来转换项目中的文件(如 Babe

警警的博客 1531

关于webpack4.0打包代码分割optimization.splitChunks的配置详解

optimization可以实现很多功能,最常见的功能是: - three shaking 只支持ES Module模块的引入,删除没有引用的模块打包 - Code Splitting 拆分代码,提高执行效率和用户体验

逗比界一朵花 1万+

webpack4之代码分割splitChunks和压缩优化

我们打包出来的js文件,只要修改或增加了内容,就会导致js文件的hash变化,从而重新打包。为了提高打包速度,每次变化仅仅是重新打包自定义代码部分,webpack4提供了optimization.splitChunks 回顾一下:webpack3时代,项目的代码分离抽取出来,是这样子的:使用new webpack.optimize.CommonsChunkPlugin,分别分离出第三方库,webp...

xueyawuhai的博客 4706

webpack项目优化高级特性:代码分割、分块打包、动态导入、按需加载

文章目录1. 为什么要分块打包2. 代码分割2.1 多入口打包2.2 提取公共模块2.3 动态导入实现按需加载2.4 魔法注释3. 总结 1. 为什么要分块打包 通过 Webpack 实现前端项目整体模块化的优势固然明显,但是它也会存在一些弊端:它最终会将我们所有的代码打包到一起。试想一下,如果我们的应用非常复杂,模块非常多,那么这种 All in One 的方式就会导致打包的结果过大,甚至超过 4~5M。 在绝大多数的情况下,应用刚开始工作时,并不是所有的模块都是必需的。如果这些模块全部被打包到一起,即便

鸭绒的博客 4562

webpack 之 webpack 进阶用法的提取页面公共资源、treeShaking、scopeHoisting、代码分割、webpack 与 ESLint 结合和webpack 打包组件与基础库

一、 webpack 进阶用法的提取页面公共资源、treeShaking、scopeHoisting、代码分割、webpack与 ESLint 结合和webpack 打包组件与基础库 基础库分离,思路是将 react、react-dom 基础包通过 cdn 引入,不打入 bundle 中,方法是使用 html-webpack-externals-plugin。 利用 SplitChunksPlugin 进行公共脚本分离,Webpack4 内置的,替代 CommonsChunkPlugin 插件。chunk

浮生离梦的博客 1130

webpack4脚手架搭建2——提取公共代码以及代码分割和懒加载

由于模块化开发中存在模块依赖问题,所以为了减少代码的冗余,提升用户加载速度,我们需要提取公共代码。 webpack 4 移除了 CommonsChunkPlugin,取而代之的是两个新的配置项(optimization.splitChunks 和 optimization.runtimeChunk) 准备工作 我们在src/文件夹下创建app.js和main.js分别作为两个入口文件。同时,这两个...

逗比界一朵花 639

Webpack在前端领域的代码分割性能评估

随着前端应用日益复杂,单页面应用(SPA)的体积不断膨胀,如何有效管理代码体积和加载性能成为关键挑战。Webpack作为主流的前端构建工具,其代码分割(Code Splitting)功能是解决这一问题的核心方案。系统分析Webpack代码分割的工作原理评估不同分割策略的性能影响提供可落地的优化方案和最佳实践探讨未来发展趋势和技术挑战研究范围涵盖Webpack 4/5版本的代码分割技术,包括动态导入、SplitChunksPlugin配置、懒加载等核心功能。首先介绍核心概念和原理。

AI架构全栈开发实战笔记 863

Webpack 代码分割与打包原理详解

优先使用动态导入:它提供了最大的灵活性,特别适合路由级或组件级的分割合理配置 SplitChunksPlugin:将第三方库和公共模块分离成单独的 chunks使用内容哈希:确保文件名随内容变化,充分利用浏览器缓存避免过大的 chunks:保持每个 chunk 大小适中,通常建议控制在 200KB 以下分析打包结果:定期使用工具分析打包结果,识别和优化大型模块通过合理使用代码分割,React 应用将具有更快的加载速度和更好的用户体验,同时保持代码的可维护性。

物物而不物于物,念念而不念于念 978

前端Webpack的代码分割策略

现代前端应用日益复杂,单页面应用(SPA)的JavaScript包体积可能达到几MB甚至更大。Webpack作为主流的前端构建工具,其代码分割功能成为优化应用加载性能的关键手段。系统讲解Webpack代码分割的核心原理分析不同分割策略的适用场景提供可落地的优化方案和最佳实践探讨前沿的分割技术和未来发展方向本文涵盖Webpack 4和5版本的主要特性,重点分析生产环境下的优化策略。第2章介绍代码分割的核心概念和Webpack实现原理第3章详细解析分割算法和操作步骤。

AI架构全栈开发实战笔记 570

探索前端Webpack的代码分割与资源优化的协同

现代前端应用日益复杂,代码体积不断膨胀,导致加载时间延长和性能下降。Webpack作为主流的前端构建工具,提供了强大的代码分割和资源优化能力。本文旨在深入解析Webpack中这些高级功能的实现原理和协同工作机制,帮助开发者构建更高效的前端应用。本文范围涵盖Webpack 5.x版本的代码分割技术(包括动态导入、入口分割和运行时优化)与资源优化策略(如Tree Shaking、缓存破坏和资源压缩)的协同工作方式。

小白菜的博客 1571

Webpack模块热替换与代码分割的兼容方案

在前端开发中,Webpack已经成为了一个非常重要的构建工具。模块热替换(HMR)可以让我们在不刷新整个页面的情况下更新模块,大大提高了开发效率。而代码分割则能将代码拆分成多个小块,按需加载,提升页面的加载性能。然而,这两者在实际使用中可能会出现一些兼容性问题。本文的目的就是探讨如何解决Webpack中模块热替换与代码分割的兼容问题,范围涵盖了相关的核心概念、算法原理、实际案例以及未来发展趋势等方面。本文首先会介绍相关的核心概念,让大家对模块热替换和代码分割有一个清晰的认识。

小白菜的博客 452

(13)webpack代码分割 code split

Webpack Code Splitting(Webpack 代码拆分)是一种将前端应用程序的代码分割成多个小块的技术,以提高性能和加载速度。通过将代码拆分成多个文件,你可以减少初始加载时间,因为只有在需要时才加载特定部分的代码。这有助于降低应用程序的初始加载时间,提高用户体验,并减轻服务器的负载。

秋来九月八 1528

利用Webpack实现前端项目的代码分割与懒加载的最佳实践

在现代前端开发中,随着项目规模的不断增大,代码体积也越来越庞大。这会导致页面加载时间变长,影响用户体验。代码分割与懒加载是解决这一问题的有效手段。本文的目的在于深入探讨如何利用Webpack这一强大的模块打包工具,实现前端项目的代码分割与懒加载,以优化项目性能。范围涵盖了代码分割与懒加载的核心概念、实现原理、实际应用案例以及相关工具和资源的推荐。本文首先介绍代码分割与懒加载的核心概念以及它们之间的联系,接着详细讲解实现代码分割与懒加载的核心算法原理和具体操作步骤,包括使用Python代码进行原理阐述。

小白菜的博客 885

Webpack实现代码分割:优化前端性能

为了解决这个问题,我们可以使用Webpack的代码分割功能来将代码拆分成更小的块,并在需要时按需加载。通过使用动态导入,我们可以将代码分割为独立的块,并在需要时按需加载。在上面的示例中,模块A和模块B被动态导入,并在导入完成后使用。Webpack会将这些导入的模块打包成独立的文件,使其可以按需加载。在上面的示例中,模块A和模块B被动态导入,并在导入完成后使用。Webpack会将这些导入的模块打包成独立的文件,使其可以按需加载。通过在函数调用中指定模块的名称,我们可以将它们打包成独立的文件。

AvskBug的博客 238

使用 webpack 代码分割和魔术注释提升应用性能

1. Web 应用性能优化的关键 关于 Web 应用性能优化,有一点是毫无疑问的:「页面加载越久,用户体验就越差」。我们几乎可以说 Web 应用性能优化的关键之处就在于:减少页面初载时,所需加载资源的「数量」和「体积」。 那么当所需加载的资源数量到达多少或资源体积小于多少,我们才可以自信地宣称我们的 Web 应用拥有出色的性能呢?下面是给出的一些参考值,该参考值考虑到了移动端与国外等多种访问环境: 页面初载时,所有未压缩的 JavaScript 脚本大小:<=200KB; 页面初载时,所有未压

与其临渊羡鱼,不如退而结网 1015

Dify安装使用说明

dify可以说是一个功能不错的LLMOps,可以通过dify集中管理模型,可以通过界面创建AI应用,可以上传文档形成知识库,可以创建自定义工具(API),并可以对外提供API。相关功能类似Openai的GPTs或智谱的智能体,其他大厂的大模型也有类似功能,不过貌似只有dify是开源的。这就为个人本地部署AI应用提供了便利。

龙井茶的Sky 1万+

华大HC32F460串口超时中断+DMA收发实战:从STM32迁移的避坑指南

本文为从STM32迁移至华大HC32F460的开发者提供了串口DMA收发的实战避坑指南。核心在于理解HC32F460以串口接收超时中断替代空闲中断的机制,并调整DMA配置策略:DMA应设置为由串口接收事件持续触发搬运,超时中断仅负责通知和重置DMA,从而实现高效可靠的数据收发。

weixin_29175469的博客 113

国家基因组科学数据中心(NGDC)---组学原始数据如何上传GSA

在发表文章之前我们需要将测序的原始数据上传到一个公共库,并在文中提供accession number,实现数据的公开共享,这是国际惯例。以前我们上传数据时只能上传到美国国立生物技术信息中心(NCBI)、欧洲生物信息学研究所(EBI)、日本核酸数据库(DDBJ),现在中国科学院北京基因组研究所(国家生物信息中心)国家基因组科学数据中心 (CNCB-NGDC)—中国的 "NCBI" 已经建立并日渐完善。组学原始数据归档库(GSA)是组学原始数据汇交、存储、管理与共享系统,是国内首个被国际期刊认可的组学数据发布平

sisichen 1万+

BIOS更新后PIN不可用怎么办?从原理到实操的完整修复指南

在计算机维护中,BIOS更新是常见的固件升级操作,但其引发的登录异常却常让用户措手不及。Windows Hello PIN并非传统密码,它通过TPM芯片与设备启动环境(PCR状态)强绑定,一旦主板固件或安全启动配置改变,TPM便会拒绝释放密钥,导致“由于此设备上的更改,你的PIN不再可用”。理解这一原理后,恢复路径清晰可控:优先尝试密码登录,或通过WinRE替换utilman.exe创建临时管理员,必要时还需处理BitLocker恢复密钥。本文面向系统维护与数据安全场景,系统梳理PIN失效的恢复流程与避坑方

weixin_31364787的博客 352

PLC为西门子的S7-1200,舵机为 DS3218,PLC控制舵机旋转程序实现?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 997

Android Update Engine 分析(三四)OTA 签名都支持哪些算法?

写了几十篇还没涉及到 OTA 签名算法细节,OTA 讨论群也很少问这个,毕竟签名算法纯理论的问题,一旦实现好就极少需要改动,只需要进行一些配置,准备好签名的秘钥和证书就可以了。限于签名的算法理论太过于抽象,本篇不讨论签名算法细节,但会总结一些签名操作。以及 Android OTA 包支持的签名算法。本文主要分析 Update Engine 中支持的签名算法,以及这些算法的操作实现(不涉及原理部分),并总结签名和验签使用的 key。

洛奇看世界 713

195、大模型蒸馏与压缩:知识蒸馏与VLA模型轻量化

折腾完这一整套流程,最大的感悟是:知识蒸馏不是简单的模型压缩,而是知识迁移的工程艺术。每一步都有坑,每个参数都可能影响最终性能。给后来者的建议是:先别急着上蒸馏,把teacher模型的推理延迟和显存占用测清楚,确定瓶颈在哪里——是计算量太大还是内存带宽不够,这决定了你该用蒸馏还是量化还是剪枝。蒸馏训练时一定要监控每一层的特征对齐loss,别只看总loss。如果某一层的对齐loss特别高,说明student在这一层学歪了,需要调整该层的损失权重或者增加该层的投影头容量。

sundong_81的博客 110

【WiFi】T830 MT7992 WMM测试修改操作说明

WiFi WMM(Wi-Fi Multimedia)是Wi-Fi联盟推出的一项技术,用于优化无线网络中的多媒体内容传输。WMM通过优先处理不同类型的数据流来改善网络性能,特别是在网络拥堵时。:WMM通过提供服务质量支持,确保语音、视频和其他多媒体应用在无线网络中获得优先处理。这有助于减少延迟和抖动,改善用户体验。:WMM将数据流分为四个优先级队列:语音、视频、最佳效果(Best Effort)和背景(Background)。语音和视频流通常被赋予更高的优先级,以确保它们在网络中得到及时传输。

wgl307293845的博客 1018

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

上一篇: typescript笔记
下一篇: 一文详解sass新特性——模块
十方魔
博客等级 码龄10年 202粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值