首页 > 其他分享 >利用 Webpack CodeSplitting 完成复杂应用拆包

利用 Webpack CodeSplitting 完成复杂应用拆包

时间:2023-11-17 17:34:45浏览次数:36  
标签:album index CodeSplitting posts js Webpack 拆包 模块 打包

All in One 的弊端

通过 Webpack 实现前端项目整体模块化的优势固然明显,但是它也会存在一些弊端:它最终会将所有的代码打包到一起。试想一下,如果应用非常复杂,模块非常多,那么这种 All in One 的方式就会导致打包的结果过大,甚至超过 4 ~ 5M。

在绝大多数的情况下,应用刚开始工作时,并不是所有的模块都是必需的。如果这些模块全部被打包到一起,即便应用只需要一两个模块工作,也必须先把 bundle.js 整体加载进来,而且前端应用一般都是运行在浏览器端,这也就意味着应用的响应速度会受到影响,也会浪费大量的流量和带宽。

所以这种 All in One 的方式并不合理,更为合理的方案是把打包的结果按照一定的规则分离到多个 bundle 中,然后根据应用的运行需要按需加载。这样就可以降低启动成本,提高响应速度。

其实这并不矛盾,只是物极必反罢了。Web 应用中的资源受环境所限,太大不行,太碎更不行。因为开发过程中划分模块的颗粒度一般都会非常的细,很多时候一个模块只是提供了一个小工具函数,并不能形成一个完整的功能单元。

如果不将这些资源模块打包,直接按照开发过程中划分的模块颗粒度进行加载,那么运行一个小小的功能,就需要加载非常多的资源模块。

再者,目前仍是主流(

标签:album,index,CodeSplitting,posts,js,Webpack,拆包,模块,打包
From: https://www.cnblogs.com/wp-leonard/p/17839303.html

相关文章

  • webpack配置优化
    Webpack是一个非常强大的模块打包器,用于处理和打包前端资产。随着项目的复杂性增加,配置文件和优化Webpack的性能就变得非常重要。以下是一些关于如何优化Webpack配置的策略:使用最新版本的Webpack:每个新版本的Webpack都可能包含性能改进和修复。确保你的项目使用的是最......
  • Webpack Bundle Analyzer包分析器
    当我们需要分析打包文件dist里哪些资源可以进一步优化时,就可以使用包分析器插件webpack-bundle-analyzer。NPM上的介绍是使用交互式可缩放树图可视化webpack输出文件的大小。我的是vue2项目。1、webpack-bundle-analyzer插件的安装$npminstall--save-devwebpack-bundle-analy......
  • webpack配置局域网访问项目
     要配置webpack允许局域网访问项目,你需要做以下几个步骤: 1.在webpack配置文件中,找到devServer选项,并设置其属性`host`为`0.0.0.0`。这将允许其他设备通过局域网IP访问你的项目。module.exports={//...devServer:{host:'0.0.0.0',//...},//........
  • vue-cli-service vue.config.js配置 productionSourceMap与webpack中的devtool 关联详
    https://webpack.js.org/configuration/devtool/https://cli.vuejs.org/zh/config/#productionsourcemap https://github.com/vuejs/vue-cli/blob/f0f254e4bc81ed322eeb9f7de346e987e845068e/packages/%40vue/cli-service/lib/config/prod.js#L7 可以在源码中看到if(pro......
  • 图解串一串 webpack 的历史和核心功能
    提到打包工具,可能你会首先想到webpack。那没有webpack之前,都是怎么打包的呢?webpack都有哪些功能?为什么这么设计呢?这篇文章我们就来一起探究一下。其实之前都不打包的,就是js、css分别用对应的工具编译下,然后在html里引入。比如js用babel编译,再用terser压缩、css用sa......
  • ast 扣取webpack
    学了ast都会自己写扣webpack脚本是吧!!所以我也写了一份letfs=require("fs");lettypes=require("@babel/types");lettraverse=require("@babel/traverse").default;letparser=require("@babel/parser");letgenerator=require(&qu......
  • webpack4_CodeSplit——optimization.splitchunks
    目录代码文档树webpack.config.js通过修改entry来达到分割打包文件的目的通过optimization.splitChunks来分离大文件以及重复文件修改entry为单文件,在test.js文件中引入jquery配置optimization.splitchunks多入口情况下的多份大文件重复引入单入口情况下的文件单独打包参考博客代......
  • TCP 的重传机制;TCP 的粘包和拆包是什么?
    重传包括超时重传、快速重传、带选择确认的重传(SACK)、重复SACK四种。一、TCP重传机制1.1超时重传超时重传,是TCP协议保证数据可靠性的另一个重要机制,其原理是在发送某一个数据以后就开启一个计时器,在一定时间内如果没有得到发送的数据报的ACK报文,那么就重新发送数据,直到发送成......
  • react 公司项目学习 【react+webpack+nw.js + mobx+react-intl 实现的多页面多语言win
    这几天突然要来个react项目;听说还比较复杂;项目组内就两个人会react还在忙,整组主要是用vue;这不,这种‘狗都不干’的事,被安排到我身上了,那就学吧;一、研究代码结构不得不说,这目录结构搞得有点复杂,算是我接触中除了乾坤和electron之外,相当复杂的了,慢慢阅读吧;看懂了,原来是react+web......
  • webpack学习从零到亿过程
    webpack学习从零到亿过程我想初始化一个node项目npminit安装webpack包npminstallwebpackwebpack-cli--save-dev写webpack配置文件config/webpack.dev.config.js安装了pathnpmipath-s-d并新建了webpack.dev.config.js写入下面简单配置constpath=......