zoukankan      html  css  js  c++  java
  • webpack性能优化-code split

    代码分割:
    • 1. 可以把一个大的入口文件 分割 成 多个入口文件,实现并行加载,从而速度更快
    • 2.可以设置成按需加载,比如单页面开发,整个页面非常庞大,所以要根据路由拆分成多个文件,实现按需加载(拆分文件需要用到webpack拆分)

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

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

      多入口打包: 会生成对应的打包文件


    3. 单入口引入jQuery, jQuery会和入口js,会合并在一起


      后果:入口js 和 jQuery 合并了(这是不允许的)



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

      成功区分 分开打包 入口文件和 jQuery


    5. 多入口引入jQuery,哪个入口引入了jQuery,jQuery就会和谁合并

      index.js 引入了 jQuery, jQuery就main合并了
    6. test.js 也 引入了 jQuery, jQuery也和test合并了

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

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

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

      使用optimization后; 会自动把公共的文件(jQuery),单独打包

      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 中 entry 还是单入口 index.js
  • 相关阅读:
    将vue文件script代码抽取到单独的js文件
    git pull 提示错误:Your local changes to the following files would be overwritten by merge
    vue和uniapp 配置项目基础路径
    XAMPP Access forbidden! Access to the requested directory is only available from the local network.
    postman与newman集成
    postman生成代码段
    Curl命令
    POST方法的Content-type类型
    Selenium Grid 并行的Web测试
    pytorch转ONNX以及TnesorRT的坑
  • 原文地址:https://www.cnblogs.com/cl1998/p/13210625.html
Copyright © 2011-2022 走看看