webpack性能优化-code split

摘要:
代码拆分:1.您可以将一个大条目文件拆分为多个条目文件,以实现并行加载,速度更快。将不同的条目文件打包为不同的块单个条目--˃仅导入一个条目文件和多个条目--˃导入多个条目的多个条目包:将为单个条目导入生成相应的包文件
代码分割:
  • 1. 可以把一个大的入口文件 分割 成 多个入口文件,实现并行加载,从而速度更快
  • 2.可以设置成按需加载,比如单页面开发,整个页面非常庞大,所以要根据路由拆分成多个文件,实现按需加载(拆分文件需要用到webpack拆分)

  1. 在 webpack 中可以定义多入口,将不同的入口文件打包为不同的 chunk
  2.    单入口---->只引入一个入口文件

       多入口---->引入多个入口文件

    webpack性能优化-code split第1张

    多入口打包: 会生成对应的打包文件
    webpack性能优化-code split第2张webpack性能优化-code split第3张

  3. 单入口引入jQuery, jQuery会和入口js,会合并在一起
    webpack性能优化-code split第4张
    webpack性能优化-code split第5张
    后果:入口js 和 jQuery 合并了(这是不允许的)

    webpack性能优化-code split第6张

    解决办法:在module.esxports引入optimization 把jQuery打包成一个单独的文件
  4. /* 
       1.可以将node_modules中代码单独打包一个chunk最终输出
      2.自动分析多入口chunk中, 有没有公共的文件.如果有会打包成单独一个chunk
    */
        optimization:{
        splitChunks:{
          chunks:'all'
        }
      },

    成功区分 分开打包 入口文件和 jQuery
    webpack性能优化-code split第7张

  5. 多入口引入jQuery,哪个入口引入了jQuery,jQuery就会和谁合并
    webpack性能优化-code split第8张
    index.js 引入了 jQuery, jQuery就main合并了
    webpack性能优化-code split第9张
  6. test.js 也 引入了 jQuery, jQuery也和test合并了

    后果:两个入口文件都引入了jQuery----->(这是不允许的,重复加载影响性能)
    webpack性能优化-code split第10张

    解决办法: 把jQuery打包成一个单独的文件---实现(多入口公用jQuery)

    webpack 中  optimization 配置 还可以 将node_modules中代码单独打包一个chunk最终输出,如果是多入口,可以 自动分析多入口chunk中,有没有公共的文件。如果有会打包成单独一个chunk;
    webpack性能优化-code split第11张

    使用optimization后; 会自动把公共的文件(jQuery),单独打包
    webpack性能优化-code split第12张

    optimizaation的作用是:

    自动将node_modules里的依赖,打包成一个单独chunk;

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

  7. 通过 js 代码,可以让指定某个文件被单独打包成一个 chunk,如在 index.js 中通过 import 语法,将引入的 test.js 单独打包为一个 chunk
    *从而实现 单入口,打包多个文件

  8. function sum(...args) {
      return args.reduce((p, c) => p + c, 0);
    }
    
    /* 
    通过js代码, 让某个文件被单独打包成一个chunk
    import动态导入语法: 能将某个文件单独打包
    */
    //import动态导入语法:能将某个文件单独打包
    import(/*webpackChunkName: 'test'*/'./test')//webpackChunkName: 'test',打包命名为text
      .then(({mul,count})=>{// 结构赋值
        console.log(mul(2,5));
      })
      .catch(()=>{
        console.log('文件加载失败');
        
      })
      
      console.log(sum(1, 2, 3, 4, 7, 9));

    构建后的文件中,test被单独打包:
    webpack性能优化-code split第13张
    此时,webpack 中 entry 还是单入口 index.js
    webpack性能优化-code split第14张

免责声明:文章转载自《webpack性能优化-code split》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇解除SQL SERVER 数据库被单个用户独占的问题Linux-vim使用操作大全下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

jquery中的事件对象

1、对于原生事件对象,由于浏览器的差异,开发者总是需要做兼容性的处理;为了解决这个问题,jquery封装了自己的事件对象,解决了原生事件对象的兼容性问题,还另外提供了很多新的属性和方法。 内容提纲: 1.事件对象 2.冒泡和默认行为 发文不易,转载请注明出处! JavaScript 在事件处理函数中默认传递了 event 对象,也就是事件对象。但由于浏览器...

Mac下通过npm安装webpack 、vuejs,以及引入jquery、bootstrap等(初稿)

前言:初次接触前端开发技术,一些方向都是在同事的指引和自己的探索后,跑了个简易web,迈入全栈系列。由于是事后来的文章,故而暂只是杂记,写的粗略且不清晰,后续将补之。 主要参考文档: http://www.runoob.com/vue2/vue-install.html http://blog.csdn.net/haoaiqian/article/deta...

轮播图3D效果--roundabout(兼容IE8)升级版

<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <style> *{ margin:0;...

单项目实现vendor分离编译,增加编译效率(vue-cli)

1、在build文件夹下添加文件:webpack.dll.config.js const path = require('path') const webpack = require('webpack') const package = require('../package.json') const AssetsPlugin = require('ass...

Vue组件别名及Ctrl跳转组件问题

Vue + webstorm Vue项目中,嫌弃导入组件的路径太长,因此为路径配置了别名,也是因此,导致 Ctrl + 鼠标左键 点击进入不了组件,为此还吐槽了一段时间配置这个别名的 “副作用” 今天突然感觉这个操作不太对劲,肯定有解决办法,后面搜索后发现果然有解决办法 File -> Settings -> Languuages &...

前端框架Vue自学之Vue CLI(五)

终极目标:掌握和使用Vue(全家桶:Core+Vue-router+Vuex) 本博客目的:记录Vue学习的进度和心得(Vue CLI) 内容:学习和使用Vue CLI2 和 Vue CLI3。如果了解webpack如何一步步配置的,建议可以先看我的前一个博客:前端框架Vue自学之webpack(四)。 正文: Vue CLI 一、Vue CLI 1、前言...