webpack - code splitting

Code splitting is one of the most compelling features of webpack. This feature allows you to split your code into various bundles which can then be loaded on demand or in parallel. It can be used to achieve smaller bundles and control resource load prioritization which, if used correctly, can have a major impact on load time.

通俗来说就是把代码分成很多很多块(chunk)。

那为什么要分块呢?

之前,为了减少http请求,我们就把所有代码打包成一个单独的JS文件。但是如果JS文件过大的话,下载速度就很慢,得不偿失。

因此webapck实现了把代码分块,需要某块代码的时候再去加载。

Code Splitting主要有三种方法:

1.  Entry Points : Manually split code using entry configuration(通过增加入口文件)

2. Prevent Duplication : Use SplitChunksPlugin to dedupe and split chunks

3.Dynamic Import: Split code via inline function calls within modules

方法一就是增加入口文件

Project

index.js

print.js

webpack.common.js

运行结果:

这种方法最简单,但是有很多缺陷,看着很难受

1. index.js和print.js文件都引入了lodash,重复的lodash module会被加载两次

2.它很不灵活,不能动态的分隔业务和核心应用

此刻我们需要把公共的lodash module提取出来。那我们就可以使用SplitChunksPlugin这个插件了

2. 防止重复,提取公共依赖
webpack.config.js

webpack4已经弃用CommonChunkPlugin了,使用SplitChunkPlugin就可以了

运行结果:

相比上一次。运行时间少了100多ms, app.bundle.js和print.bundle.js的size都小了很多,lodash已经从这两个文件中移除了。

但是这种方法还不能做到按需加载

3. Dynamic Imports 动态导入

使用import(),在webpack中的import()是个分离点——split-point,用来把被请求的模块独立成一个单独的模块。

import()把模块的名字作为一个参数,并且返回一个Promise: import(name)->Promise.

run : npm run server

显然看到lodash没有打包在app.bundle.js文件里面。

原文地址:https://www.cnblogs.com/thonrt/p/9522949.html

时间: 2024-11-04 15:12:06

webpack - code splitting的相关文章

[Webpack 2] Maintain sane file sizes with webpack code splitting

As a Single Page Application grows in size, the size of the payload can become a real problem for performance. In this lesson, learn how to leverage code splitting to easily implement lazy loading for your application to load only the code necessary

[转] react-router4 + webpack Code Splitting

项目升级为react-router4后,就尝试着根据官方文档进行代码分割.https://reacttraining.com/react-router/web/guides/code-splitting 在实际项目中,js,css文件默认通过webpack打包的话会很大,动不动就好几兆. 在实际场景中,我们需要缩短首屏的时间展现时间,需要将 首屏没有 涉及到 其他页面的 业务和组件 进行代码分离,按需加载. 通过按需加载,如果只是修改了某个页面的逻辑,也不用整个项目文件加载,增加了浏览器缓存的利

webpack优化之code splitting

作为当前风头正盛的打包工具,webpack风靡前端界.确实作为引领了一个时代的打包工具,很多方面都带来了颠覆性的改进,让我们更加的感受到自动化的快感.不过最为大家诟病的一点就是用起来太难了. 要想愉快的使用,要使用n多的配置项,究其原因在于文档的不够详细.本身默认集成的不足.也不能说这是缺点吧,更多的主动权放给用户就意味着配置工作量的增加,这里就不过多探讨了.当历尽千辛万苦,你的项目跑起来之后,可能会发现有一些不太美好的问题的出现,编译慢.打包文件大等.那么,我们还要花些时间来看看怎么优化相关配

webpack 和 code splitting

Code Splitting指的是代码分割,那么什么是代码分割,webpack和code splitting又有什么样的联系呢? 使用npm run dev:"webpack-dev-server --config ./build/webpack.dev.js.",会看不到打包生成的dist目录. 所以我们使用一个新的,不要启用dev-server服务.使用npm run dev-build:"webpack --config ./build/webpack.dev.js&q

vuejs code splitting with webpack 3种模式

我们知道一个web app如果太大会严重影响用户的体验,如何能够最快速度地让用户看到完整页面是优化web应用需要做的重要工作. 这其中使用code split实现lazy加载,只让用户初次访问时只加载必须的html,css,javascrip是一个比较好的思路.那么到底什么情况下应该使用code split呢? 在vuejs app结合webpack工具链的开发中,至少有以下三种模式可能比较适合使用code split功能,实现lazy load. per page, below fold by

webpack 打包文件体积过大解决方案(code splitting)

优化对比 : 未优化前:index.html引入一个main.js文件,体积2M以上. 优化后入:index.html引入main.js.commons.js.charts.js.other.js.以达到将main.js平分目的.每个文件控制300k以内.(如果高兴100k也没问题) 用到的一堆库及工具: vue.webpack.babel.highcharts.echarts.jquery.html2canvas******此去省略若干m代码 问题: 开发环境用webpack后发现单个js文件

Webpack打包进阶

说在前面 由于使用了React直出,页面各项性能指标使人悦目.本篇将深入探讨目前PC部落所采用webpack打包优化策略,以及探讨PC部落并未使用的 webpack Code Splitting 代码分包.异步模块加载特性.看看它们又是如何对PC部落的性能起到进一步的催化作用. 为什么要使用webpack 如果你曾经使用过 Broserify, RequireJS 或类似的打包工具,并注重:代码分包.异步加载.静态资源打包(图片/CSS).那么 webpack 就是帮你构建项目的利器!简单一句话

【转】手摸手,带你用vue撸后台 系列三(实战篇)

前言 在前面两篇文章中已经把基础工作环境构建完成,也已经把后台核心的登录和权限完成了,现在手摸手,一起进入实操. Element 去年十月份开始用vue做管理后台的时候毫不犹豫的就选择了Elemen,那时候vue2 刚发没多久,市面上也没有很多其它的vue2的ui框架.虽然Element也有很多的不足,前期的bug也不少,但我还是选择了它,说一下我选择Element的原因吧: 有大厂背书 : 虽然核心开发只有三个人,但至少不用担心哪天就不维护,带着小姨子跑路了. 持续迭代 : Element发版

003-ant design pro 路由和菜单

一.概述 参看地址:https://pro.ant.design/docs/router-and-nav-cn 二.原文摘要 路由和菜单是组织起一个应用的关键骨架,我们的脚手架提供了一些基本的工具及模板,帮助你更方便的搭建自己的路由/菜单. 如果你想了解更多关于 browserHistory 和 hashHistory,请参看 构建和发布. 注意:我们的脚手架依赖 [email protected],路由方面是基于 [email protected] 的实现,在写法以及 API 上与之前的版本有