当前位置: 首页 > news >正文

webpack当中的代码分割详解

A.代码分割方法一:将原来的单入口文件改为多入口文件

将不同的文件例如js代码文件分为入口文件和测试文件,这个时候打包出来的代码就会根据不同的文件单独打包成属于他们自己的文件

 例如以下为单入口文件:

entry: './src/js/index.js'

 多入口文件:(在输出的时候将输出的文件名进行分类)

 entry: {// 多入口:有一个入口,最终输出就有一个bundleindex: './src/js/index.js',test: './src/js/test.js'},output: {// [name]:取文件名filename: 'js/[name].[contenthash:10].js',path: resolve(__dirname, 'build')}

B.使用splitChunks分离代码

当我们在文件当中引入了node_modules的包时,在打包之后可能打包工具会自动将node_modules当中的包打包进文件当中,这个时候使用以下代码:可以将引入的这些包单独打包,从而减小打包的体积

总的来说,功能就是:

    1. 可以将node_modules中代码单独打包一个chunk最终输出

    2. 自动分析多入口chunk中,有没有公共的文件。如果有会打包成单独一个chunk

  optimization: {splitChunks: {chunks: 'all'}}

完整代码:

const { resolve } = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');module.exports = {// 单入口// entry: './src/js/index.js',entry: {index: './src/js/index.js',test: './src/js/test.js'},output: {// [name]:取文件名filename: 'js/[name].[contenthash:10].js',path: resolve(__dirname, 'build')},plugins: [new HtmlWebpackPlugin({template: './src/index.html',minify: {collapseWhitespace: true,removeComments: true}})],/*1. 可以将node_modules中代码单独打包一个chunk最终输出2. 自动分析多入口chunk中,有没有公共的文件。如果有会打包成单独一个chunk*/optimization: {splitChunks: {chunks: 'all'}},mode: 'production'
};

C.通过js代码,让某个文件被单独打包成一个chunk

 通过js代码,让某个文件被单独打包成一个chunk

 import动态导入语法:能将某个文件单独打包

例如在js代码当中添加以下代码:

import('./test').then(({ mul, count }) => {console.log(mul(2, 5));}).catch(() => {console.log('文件加载失败~');});

这个时候在打包的时候就能将引入的这个test.js文件单独打包完成

http://www.lryc.cn/news/11841.html

相关文章:

  • 【SSM】Spring对IoC的实现方式DI详讲
  • 【QT 5 相关实验-示波器-学习笔记-示波器组件练习与使用总结】
  • 二维数组中的查找(两种解法,各有千秋)
  • quartz使用及原理解析
  • Datawhale组队学习:大数据 D2——分布式文件系统(HDFS)
  • CCIE重认证-300-401-拖图题全
  • 如何动态的创建类?type的其他用法?什么是元类,如何自定义元类?
  • XCP实战系列介绍15-XCP故障排查指导
  • 吉林大学软件需求分析与规范(Software Requirements Analysis Specification)
  • PyTorch - Conv2d 和 MaxPool2d
  • leetcode Day2(昨天实习有点bug,心态要崩了)
  • 另一种思考:为什么不选JPA、MyBatis,而选择JDBCTemplate
  • LeetCode 338. 比特位计数
  • 排序评估指标——NDCG和MAP
  • [Android Studio] Android Studio Virtual Device(AVD)虚拟机的功能试用
  • kafka-3-kafka应用的核心要点和内外网访问
  • VS2017+OpenCV4.5.5 决策树-评估是否发放贷款
  • Prometheus 记录规则和警报规则
  • (API)接口测试的关键技术
  • 快速排序算法原理 Quicksort —— 图解(精讲) JAVA
  • linux环境搭建私有gitlab仓库
  • SpringSecurity授权
  • 学习 Python 之 Pygame 开发坦克大战(一)
  • 2.5|iot冯|方元-嵌入式linux系统开发入门|2.13+2.18
  • 一起Talk Android吧(第四百九十六回:自定义View实例二:环形进度条)
  • 上传图片尺寸校验
  • 【Python】缺失值处理和拉格朗日插值法(含源代码实现)
  • SpringCloudAlibaba-Sentinel
  • 【程序化天空盒】过程记录02:云扰动 边缘光 消散效果
  • 链表OJ(三) 反转链表合集