详解用webpack的CommonsChunkPlugin提取公共代码的3种方式

 更新时间:2017年11月09日 09:31:47   作者:学习笔记666  
本篇文章主要介绍了详解用webpack的CommonsChunkPlugin提取公共代码的3种方式,具有一定的参考价值,有兴趣的可以了解一下

Webpack 的 CommonsChunkPlugin 插件,负责将多次被使用的 JS 模块打包在一起。

CommonsChunkPlugin 能解决的问题

在使用插件前,考虑几个问题:

  1. 对哪些 chunk 进行提取,这决定了 chunks ,children 和 name 要怎么配置
  2. common chunk 是否异步,这决定了 async 怎么配置
  3. common chunk 的粒度,这决定了 minChunks 和 minSize 怎么配置

以下是官方给出的常用的场景:

  1. 提取两个及两个以上 Chunk 的公共代码
  2. 将 Code Split 切割出来的 Chunk「就是子 Chunk」,提取到父 Chunk
  3. 将 Code Split 切割出来的 Chunk,提取到一个新的异步加载的 Chunk
  4. 提取某个类似 jquery 或 react 的代码库

前面我们实现了 多页面分离资源引用,按需引用JS和css

但有一个问题:最后生成的3个js,都有重复代码,我们应该把这部分公共代码单独提取出来。

方式一,传入字符串参数

new webpack.optimize.CommonsChunkPlugin(‘common.js'), // 默认会把所有入口节点的公共代码提取出来,生成一个common.js

var HtmlWebpackPlugin = require('html-webpack-plugin');
var webpack = require('webpack');

var extractTextPlugin = require('extract-text-webpack-plugin');

module.exports = {
  // entry是入口文件,可以多个,代表要编译那些js
  //entry:['./src/main.js','./src/login.js','./src/reg.js'],

  entry:
  {
    'main':'./src/main.js',
    'user':['./src/login.js','./src/reg.js'],
    'index':['./src/index.js']
  },

  externals:{
    'jquery':'jQuery'
  },

  module:{
    loaders:[
      // {test:/\.css$/,loader:'style-loader!css-loader'},
      {test:/\.css$/,loader:extractTextPlugin.extract('style','css')}
    ],
  },

  output:{
    path: __dirname+'/build/js', // 输出到那个目录下(__dirname当前项目目录)
    filename:'[name].js' //最终打包生产的文件名
  },

  plugins:[
    new HtmlWebpackPlugin({
      filename: __dirname+'/build/html/login-build.html',
      template:__dirname+'/src/tpl/login.html',
      inject:'body',
      hash:true,
      chunks:['main','user','common.js']  // 这个模板对应上面那个节点
    }),

    new HtmlWebpackPlugin({
      filename: __dirname+'/build/html/index-build.html',
      template:__dirname+'/src/tpl/index.html',
      inject:'body',
      hash:true,
      chunks:['index','common.js']  // 这个模板对应上面那个节点
    }),

    // css抽取
    new extractTextPlugin("[name].css"),

    // 提供公共代码
    new webpack.optimize.CommonsChunkPlugin('common.js'), // 默认会把所有入口节点的公共代码提取出来,生成一个common.js
  ]
};

方式二,有选择的提取公共代码

// 提供公共代码
// 默认会把所有入口节点的公共代码提取出来,生成一个common.js
// 只提取main节点和index节点
new webpack.optimize.CommonsChunkPlugin('common.js',['main','index']), 

方式三,有选择性的提取(对象方式传参)

推荐

    new webpack.optimize.CommonsChunkPlugin({
      name:'common', // 注意不要.js后缀
      chunks:['main','user','index']
    }),

通过CommonsChunkPlugin,我们把公共代码专门抽取到一个common.js,这样业务代码只在index.js,main.js,user.js

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 利用JavaScript创建一个兔年春节倒数计时器

    利用JavaScript创建一个兔年春节倒数计时器

    这篇文章主要介绍了如何利用JavaScript创建一个兔年春节倒数计时器,文中的示例代码讲解详细,对我们学习JavaScript有一定的帮助,需要的可以参考一下
    2023-01-01
  • 微信小程序音频录制波纹循环动画

    微信小程序音频录制波纹循环动画

    这篇文章主要为大家详细介绍了微信小程序音频录制波纹循环动画,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • JavaScript中防抖和节流的实战应用记录

    JavaScript中防抖和节流的实战应用记录

    防抖与节流都是用来限制用户频发触发事件的机制,下面这篇文章主要给大家介绍了关于JavaScript中防抖和节流的实战应用,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • JS正则表达式常见用法实例详解

    JS正则表达式常见用法实例详解

    这篇文章主要介绍了JS正则表达式常见用法,结合实例形式分析了javascript元字符、分组符、修饰符、量词基本含义,并结合具体案例形式分析了javascript正则基本使用技巧,需要的朋友可以参考下
    2018-06-06
  • js 通过Object.defineProperty() 定义和控制对象属性

    js 通过Object.defineProperty() 定义和控制对象属性

    这篇文章主要介绍了js 通过Object.defineProperty() 定义和控制对象属性,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-08-08
  • JavaScript技巧44招【实用】

    JavaScript技巧44招【实用】

    JavaScript是一个绝冠全球的编程语言,可用于Web开发、移动应用开发(PhoneGap、Appcelerator)、服务器端开发(Node.js和Wakanda)等等。本文主要介绍JavaScript应用的一些小技巧。
    2016-12-12
  • nodejs 后缀名判断限制代码

    nodejs 后缀名判断限制代码

    如一个文件上传功能,需要对上传文件进行文件格式限制。我们通常会使用后缀名做限制。
    2011-03-03
  • JavaScript中跨域问题的深入理解

    JavaScript中跨域问题的深入理解

    这篇文章主要给大家介绍了关于JavaScript中跨域问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 7个去伪存真的JavaScript面试题

    7个去伪存真的JavaScript面试题

    这篇文章主要为大家分享了7个去伪存真的JavaScript面试题,希望本文可以帮助大家比较顺利的通过面试,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • 小程序统计来源信息的方案与具体代码

    小程序统计来源信息的方案与具体代码

    微信小程序数据统计,现在有很多的统计方法和统计工具,下面这篇文章主要给大家介绍了关于小程序统计来源信息的方案与具体代码,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-09-09

最新评论