3.2.4 webpack代码分离

Posted SlightFly

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3.2.4 webpack代码分离相关的知识,希望对你有一定的参考价值。

为什么需要代码分离?

  为了将代码分成多个bundle,并灵活定制加载策略(按需加载,并行加载),从而大大提升应用的加载速度

如何代码分离?

  1、入口起点:使用entry配置手动的分离代码

  2、放置重复:使用SplitChunkPlugin去重和分离chunk

  3、动态导入:通过在代码中使用动态加载模块的语法来分离代码

1、多入口构建

module.exports = {
    entry: {
     app: "./src/index.js",
     app2: "./sec/anthor-module.js"
    },
    output: {
        path: __dirname + "/src/dist",
        filename: "./[name].bundle.js",
  }
}

  最终结果:index.bundle.js / another.bundle.js

  问题: 1、公共资源可能被重复引入 2、不够灵活 (两个文件都引入lodash,那最终的bundle中都半酣loadsh,每个bundle都需要我们通过entry配置)

2、SplitChunks

  曾经有专门的插件去做,在webpack4中将其统一到了optimization配置中,成为了一个官方的优化项

module.exports = {
  entry: {
   app: "./src/index.js",
   app2: "./sec/anthor-module.js"
  },
  output: {
      path: __dirname + "/src/dist",
      filename: "./[name].bundle.js",
  },
  optimization: {
    splitChunks: {
      chunks: ‘all‘ // 开启 自动的抽取代码 功能
    }
  }
}

  最终结果:index.bundle.js / another.bundle.js / anther-index.bundle.js(公共依赖),,,splitChunks插件

3、动态导入

  1. import() 

  2. require.ensure()

import(
  /**webpackChunkName: "lodash" */ ‘lodash‘
)
.then(({ default: _ }) => {
  // ```
})
.catch(error => {
  // error
})

 

以上是关于3.2.4 webpack代码分离的主要内容,如果未能解决你的问题,请参考以下文章

webpack -- 代码分离

webpack学习之—— Code Spliting(代码分离)

webpack教程——分离组件代码

webpack打包分离第三方库和业务代码

第1215期基于Webpack4使用懒加载分离打包React代码

手把手带你使用webpack4构建一个Vue开发编译环境,并实现代码分割,css代码分离