webpack英文文档阅读笔记--chunks

本文介绍了webpack如何通过chunks实现代码分隔,提高大型应用的加载效率。讲解了两种极端的JS模块加载方式,并详细阐述了webpack配置、打包过程以及不同页面加载chunks的流程。
摘要由CSDN通过智能技术生成

两种极端的加载JS模块的方式

  --------------
    一个个的加载
  --------------
  优势: 仅仅需要的被加载。
  劣势: 请求数太多,请求的延迟造成了应用启动的缓慢

  ----------------------
    将所有的模块做一次请求
  ----------------------
  优势: 更少的请求数,更少的请求延迟。
  劣势: 当前可能未被用到的模块也被加载了。  

webpack中的chunks

对于一个大型应用,我们将多有的JS文件打包成一个文件,显然效率不高。特别是其中的大部分JS文件是在特定情况下才需要加载的。而webpack中的一个特点就是将所有的文件打包成一个’chunks’,达到按需加载的目的.规划按需加载的特点我们称之为代码分隔(code splitting). 再看下面几个例子首先要明白
* 在你的项目根目录建立一个webpack.config.js(这里配置你的打包选项)
* 在命令行中输入webpack会默认执行webpack.config.js文件

  ------------
    单个入口
  ------------  

  app.js
  const a = require('./js/a.js');
  a.say();
  //这里的ensure函数的第一个参数 依赖项只会被下载下来并不会被执行。
  require.ensure(['./js/b.js'], function (require) {
    const b = require('./js/b.js');
    b.say();
  },'other'); // 添加一个chunkName

  webpack.config.js:
  entry: {
    app: './app.js',
  },
  output: {
    filename: 'bundle.js'
  },
  此时webpack会生成bundle.js和1.bundle.js两个文件。
  而我们只需要引用bundle.js, 1.bundle.js则是按需加载。

打包的过程

images

html加载的过程

images

  -----------
    多个入口
  -----------
  a.js:
  const $ = require('./jquery.js');
  $('#demo').css('color','red');
  require(['./share.js'], function (share) {
    share('page one');
  });

  b.js:
  const $ = require('./jquery.js');
  $('#demo').css('color','yellow');
  require.ensure(['./share.js'], function (require) {
    const share = require('./share.js');
    share('page two');
  });

  这里jquery.js和share.js是两个入口文件共同使用的。

  webpack.config.js:
  entry: {
    pageA: './js/a.js',
    pageB: './js/b.js',
    vendor: ['./js/jquery.js','./js/share.js']
  },
  output: {
    path: path.join(__dirname, 'dist'),
    filename: '[name].bundle.js',
    chunkFilename: '[id].chunk.js'
  },
  plugins: [
    new webpack.optimize.CommonsChunkPlugin('vendor', 'vendor.bundle.js')
  ]

打包过程

images

页面A加载过程

images

页面B加载过程

images

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值