学习webpack4 - 抽离公共代码

news/2024/5/17 14:55:59

学习webpack4 - 基础配置
学习webpack4 - HTML处理
学习webpack4 - 样式处理
学习webpack4 - ES6语法转化
学习webpack4 - 第三方模块的使用
学习webpack4 - 抽离公共代码

...持续中

=======================================================

抽离公共代码

我们在开发多个页面的项目的时候,有时候会在几个页面中引用某些公共的模块,这些公共模块多次被下载会造成资源浪费,如果把这些公共模块抽离出来只需下载一次之后便缓存起来了,这样就可以避免因重复下载而浪费资源,那么怎么在webpack中抽离出公共部分呢?方法如下:

公共模块抽离

举例:

项目中分别有a.js, b.js, page1.js, page2.js这四个JS文件, page1.js 和 page2.js中同时都引用了a.js, b.js, 这时候想把a.js, b.js抽离出来合并成一个公共的js,然后在page1, page2中自动引入这个公共的js,怎么配置呢?如下: 

配置webpack.config.js文件:

module.exports = {
  //...

  //优化项配置
  optimization: {
    // 分割代码块
    splitChunks: {
      cacheGroups: {
        //公用模块抽离
        common: {
          chunks: 'initial', 
          minSize: 0, //大于0个字节
          minChunks: 2 //抽离公共代码时,这个代码块最小被引用的次数
        }
      }
    }
  }
}

完成!

第三方模块抽离

页面中有时会引入第三方模块,比如import $ from 'jquery'; page1中需要引用,page2中也需要引用,这时候就可以用vendor把jquery抽离出来,方法如下:

module.exports = {
  //...

  //优化项配置
  optimization: {
    // 分割代码块
    splitChunks: {
      cacheGroups: {

        //公用模块抽离
        common: {
          chunks: 'initial',
          minSize: 0, //大于0个字节
          minChunks: 2, //在分割之前,这个代码块最小应该被引用的次数
        },
        
        //第三方库抽离
        vendor: {
          priority: 1, //权重
          test: /node_modules/,
          chunks: 'initial',
          minSize: 0, //大于0个字节
          minChunks: 2, //在分割之前,这个代码块最小应该被引用的次数
        }
      }
    }
  }
}

注意:这里需要配置权重 priority,因为抽离的时候会执行第一个common配置,入口处看到jquery也被公用了就一起抽离了,不会再执行wendor的配置了,所以加了权重之后会先抽离第三方模块,然后再抽离公共common的,这样就实现了第三方和公用的都被抽离了。

不加权重之前:
jquery也被抽离到了公共js里
clipboard.png

加了权重之后:

clipboard.png


http://www.niftyadmin.cn/n/4021793.html

相关文章

修改mysql的group_concat函数长度限制,解决数据莫名其妙丢失问题

mysql的group_concat函数查询结果默认长度1024,超过这个长度的结果将不显示,使用的时候可能会遇到莫名其妙丢失的问题,有临时解决方案和永久解决方案2种: 1.永久解决方案,在mysql的配置文件“my.ini”或“my.conf”加…

mysql生成随机数函数

#随机数 select RAND() * 100 #50-100之间的随机数 select 50 RAND() * (100 - 50) #随机整数 select FLOOR(RAND() * 100) #保留2位小数的随机数 select truncate(RAND() * 100,2)

mysql 拼接字符串函数CONCAT,列拼接函数GROUP_CONCAT

1.拼接字符串函数:CONCAT select CONCAT(hello,word); 结果:helloword 2.带分隔符拼接字符串函数:CONCAT_WS select CONCAT_WS(#,hello,word); 结果:hello#word 3.列拼接函数:GROUP_CONCAT 表数据: …

孪生素数(用筛法求素数)

所谓孪生素数指的就是间隔为 2 的相邻素数,它们之间的距离已经近得不能再近了, 就象孪生兄弟一样。最小的孪生素数是 (3, 5), 在 100 以内的孪生素数还有 (5, 7), (11, 13), (17, 19), (29, 31), (41, 43), (59, 61) 和 (71, 73),…

centos 6 添加端口白名单,设置防火墙白名单

1.使用root权限编辑iptables,命令如下: vi /etc/sysconfig/iptables 或 sudo vi /etc/sysconfig/iptables 2.在ACCEPT列表中增加访问的端口 -A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT 3.编辑完成后保存,命令…

nginx离线安装教程

准备离线包 nginx-1.14.0.tar.gz pcre-8.42.tar.bz2 zlib-1.2.8.tar.gz Copy离线安装文件到服务器先安装pcre 1.解压pcre tar -jxvf pcre-8.42.tar.bz2 2.pcre编译环境验证 ./configure 3.编译pcre make 再安装zlib 1.解压zlib tar -zxvf zlib-1.2.8.tar.gz 2.zlib编…

【网络开发】组播问题分析

1、知识介绍 根据接收者对组播源处理方式的不同,组播模型分为以下三类: 1)ASM 模型:Any-Source Multicast,任意信源组播 2)SFM 模型:Source-Filtered Multicast,信源过滤组播 3)SSM 模型&#…

Postgresql 离线安装教程

Postgresql 离线安装教程 1.下载postgresql安装包和依赖包 依赖包包括:gcc、zlib、readline等,但是一般的服务器都自带gcc或zlib。 postgresql包下载地址:https://ftp.postgresql.org/pub/source/ readline包下载地址:http://ftp.…