<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      webpack生產環境優化:code split

      轉載請注明 來源:http://www.eword.name/
      Author:eword
      Email:eword@eword.name

      webpack生產環境優化:code split

      code split代碼分割,既將打包后的js分割成多份js文件,
      方便后期實現“并行加載”、“按需加載”等,提高性能。

      一、核心配置

      建議使用方式二的單入口模式,并按需使用方式三。

      1.1、方式一:根據入口文件進行代碼分割

      /*
          webpack.config.js webpack的配置文件
          路徑: ./webpack.config.js
      */
      
      // resolve用來拼接絕對路徑的方法
      const { resolve } = require('path');
      // 引入打包 html 文件的插件 html-webpack-plugin
      const HtmlWebpackPlugin = require('html-webpack-plugin');
      
      module.exports = {
          // webpack配置
          // 入口起點文件
      
          // 單入口
          // entry: './src/js/index.js',
      
          entry: {
              // 多入口:有一個入口,最終輸出就有一個bundle,多入口就有多個bundle,每個bundle會打包成一個js文件。
              main:'./src/js/index.js',
              test:'./src/js/test.js',
          },
          // 輸出
          output: {
              // 輸出文件名
              filename: 'js/[name].[contenthash:10].js',
              // 輸出路徑
              // __dirname nodejs的變量,代表當前文件的目錄絕對路徑
              path: resolve(__dirname, 'build'),
          },
      
          // plugins的配置
          plugins: [
              // 詳細的plugins配置
              // html-webpack-plugin
              // 功能:默認會創建一個空的HTML, 自動引入打包輸出的所有資源(JS/CSS)
              // 需求:需要有結構的HTML文件
              new HtmlWebpackPlugin({
                  // 復制../src/index.html'文件,并自動引入打包輸出的所有資源(JS/CS5)
                  template: './src/index.html',
                  //壓縮 html 代碼
                  minify: {
                      //移除空格
                      collapseWhitespace: true,
                      //移除注釋
                      removeComments: true
                  }
              }),
      
          ],
          // 模式  development  開發環境,production 生產環境
          // mode: 'development',
          // 生產環境下會自動壓縮js代碼
          mode: 'production',
      };
      

      核心配置

      /*
          webpack.config.js webpack的配置文件
          路徑: ./webpack.config.js
      */
          ……
      
          entry: {
              // 多入口:有一個入口,最終輸出就有一個bundle,多入口就有多個bundle,每個bundle會打包成一個js文件。
              main:'./src/js/index.js',
              test:'./src/js/test.js',
          },
          // 輸出
          output: {
              // 輸出文件名
              filename: 'js/[name].[contenthash:10].js',
              // 輸出路徑
              // __dirname nodejs的變量,代表當前文件的目錄絕對路徑
              path: resolve(__dirname, 'build'),
          },
          
          ……
          
      

      問題:不夠靈活,需要為每一個想要分割的js文件進行配置。

      1.2、方式二:配置optimization

      /*
          webpack.config.js webpack的配置文件
          路徑: ./webpack.config.js
      */
      
      // resolve用來拼接絕對路徑的方法
      const { resolve } = require('path');
      // 引入打包 html 文件的插件 html-webpack-plugin
      const HtmlWebpackPlugin = require('html-webpack-plugin');
      
      module.exports = {
          // webpack配置
          // 入口起點文件
      
          // 單入口
          // entry: './src/js/index.js',
      
          entry: {
              // 多入口:有一個入口,最終輸出就有一個bundle,多入口就有多個bundle,每個bundle會打包成一個js文件。
              main:'./src/js/index.js',
              test:'./src/js/test.js',
          },
      
          // 輸出
          output: {
              // 輸出文件名
              filename: 'js/[name].[contenthash:10].js',
              // 輸出路徑
              // __dirname nodejs的變量,代表當前文件的目錄絕對路徑
              path: resolve(__dirname, 'build'),
          },
      
          // plugins的配置
          plugins: [
              // 詳細的plugins配置
              // html-webpack-plugin
              // 功能:默認會創建一個空的HTML, 自動引入打包輸出的所有資源(JS/CSS)
              // 需求:需要有結構的HTML文件
              new HtmlWebpackPlugin({
                  // 復制../src/index.html'文件,并自動引入打包輸出的所有資源(JS/CS5)
                  template: './src/index.html',
                  //壓縮 html 代碼
                  minify: {
                      //移除空格
                      collapseWhitespace: true,
                      //移除注釋
                      removeComments: true
                  }
              }),
      
          ],
      
          /* 
          可以將node_modules中代碼單獨打包成一個chunk最終輸出。
          自動分析多入口chunk中,有沒有公共的文件。如果有會打包成單獨一個chunk。
          */
          optimization: {
              splitChunks: {
                  chunks: 'all'
              }
          }
      
          // 模式  development  開發環境,production 生產環境
          // mode: 'development',
          // 生產環境下會自動壓縮js代碼
          mode: 'production',
      
      };
      
      

      核心配置

          ……
          // 單入口
          // entry: './src/js/index.js',
      
          entry: {
              // 多入口:有一個入口,最終輸出就有一個bundle,多入口就有多個bundle,每個bundle會打包成一個js文件。
              main:'./src/js/index.js',
              test:'./src/js/test.js',
          },
          ……
          /* 
          可以將node_modules中代碼單獨打包成一個chunk最終輸出。
          自動分析多入口chunk中,有沒有公共的文件。如果有會打包成單獨一個chunk。
          */
          optimization: {
              splitChunks: {
                  chunks: 'all'
              }
          }
          ……
      
      • 單入口下,可以將node_modules中代碼單獨打包成一個chunk最終輸出。
      • 多入口下相比于單入口,更是能自動分析多入口chunk中有沒有公共的文件。如果有會打包成單獨一個chunk。

      1.3、方式三:import動態導入

      //入口文件
      // ./src/index.js
      
      import('./test')
          .then(({mul,count}) => {
              //文件加載成功~
              // eslint-disable-next-line 
              console.log(mul(2,5));
          })
          .catch(() => {
              //文件加載失敗~
              // eslint-disable-next-line 
              console.log('文件加載失敗~');
          });
      

      核心配置

      import('./xxx/xxx')
          .then(({mul,count}) => {
              //文件加載成功時執行。
              ……
          })
          .catch(() => {
              //文件加載失敗時執行。
              ……
          });
      

      通過js代碼,讓某個文件被單獨打包成一個chunk。
      import動態導入語法:能將某個文件單獨打包。

      1.3.1、自定義打包的文件名

      //入口文件
      
      
      // 在import中加入配置信息:/* webpackChunkName: 'test' */
      // 用webpackChunkName指定chunk名稱。
      
      import(/* webpackChunkName: 'test' */'./test')
          .then(({mul,count}) => {
              //文件加載成功~
              // eslint-disable-next-line 
              console.log(mul(2,5));
          })
          .catch(() => {
              //文件加載失敗~
              // eslint-disable-next-line 
              console.log('文件加載失敗~');
          });
      
      

      四、工程文件目錄

      # 目錄結構
      .
      ├── src
      │   ├── index.html
      │   └── js
      │       ├── index.js
      │       └── test.js      //希望被獨立打包的文件
      └── webpack.config.js
      
      posted @ 2023-08-28 22:37  影烏  閱讀(113)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 视频一区二区三区四区不卡| 国产av一区二区三区精品| 美女裸体黄网站18禁止免费下载 | 人妻少妇偷人无码视频| 国产精品白丝久久AV网站| 韩国午夜福利片在线观看| 熟女激情乱亚洲国产一区| 国产亚洲精品久久久久久大师| 福利在线视频一区二区| 日本精品aⅴ一区二区三区| 国内精品视频一区二区三区八戒 | 国产精品99中文字幕| 国产AV永久无码青青草原| 无码人妻丝袜在线视频| 蜜桃无码一区二区三区| 国产精品一二三中文字幕| 亚洲欧美卡通另类丝袜美腿| 亚洲人成色77777| 视频一区视频二区中文字幕| 日本边添边摸边做边爱喷水| 欧美最猛黑人xxxx| 国产熟女激情一区二区三区| 亚洲大尺度无码专区尤物| 国产精品自在自线视频| 亚洲无av在线中文字幕| 国产中文字幕精品免费 | 国产精品有码在线观看| 国产成人精品成人a在线观看| 亚洲AV毛片一区二区三区| 中文字幕久久国产精品| 久久一级精品久熟女人妻| 国产日产欧产系列| 国产成人高清亚洲综合| 精品国产午夜福利理论片| 黑人av无码一区| 成年无码av片在线蜜芽| 丝袜美腿诱惑之亚洲综合网| 色老头亚洲成人免费影院| 国产一区二区三区AV在线无码观看 | 欧美牲交a欧美牲交aⅴ一| 高清无码18|