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

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

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

      webpack生產(chǎn)環(huán)境優(yōu)化:code split

      轉(zhuǎn)載請注明 來源:http://www.eword.name/
      Author:eword
      Email:eword@eword.name

      webpack生產(chǎn)環(huán)境優(yōu)化:code split

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

      一、核心配置

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

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

      /*
          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
              // 功能:默認會創(chuàng)建一個空的HTML, 自動引入打包輸出的所有資源(JS/CSS)
              // 需求:需要有結(jié)構(gòu)的HTML文件
              new HtmlWebpackPlugin({
                  // 復(fù)制../src/index.html'文件,并自動引入打包輸出的所有資源(JS/CS5)
                  template: './src/index.html',
                  //壓縮 html 代碼
                  minify: {
                      //移除空格
                      collapseWhitespace: true,
                      //移除注釋
                      removeComments: true
                  }
              }),
      
          ],
          // 模式  development  開發(fā)環(huán)境,production 生產(chǎn)環(huán)境
          // mode: 'development',
          // 生產(chǎn)環(huán)境下會自動壓縮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
              // 功能:默認會創(chuàng)建一個空的HTML, 自動引入打包輸出的所有資源(JS/CSS)
              // 需求:需要有結(jié)構(gòu)的HTML文件
              new HtmlWebpackPlugin({
                  // 復(fù)制../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  開發(fā)環(huán)境,production 生產(chǎn)環(huán)境
          // mode: 'development',
          // 生產(chǎn)環(huán)境下會自動壓縮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動態(tài)導(dǎo)入

      //入口文件
      // ./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}) => {
              //文件加載成功時執(zhí)行。
              ……
          })
          .catch(() => {
              //文件加載失敗時執(zhí)行。
              ……
          });
      

      通過js代碼,讓某個文件被單獨打包成一個chunk。
      import動態(tài)導(dǎo)入語法:能將某個文件單獨打包。

      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('文件加載失敗~');
          });
      
      

      四、工程文件目錄

      # 目錄結(jié)構(gòu)
      .
      ├── src
      │   ├── index.html
      │   └── js
      │       ├── index.js
      │       └── test.js      //希望被獨立打包的文件
      └── webpack.config.js
      
      posted @ 2023-08-28 22:19  Eword  閱讀(50)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 手机在线看片不卡中文字幕| 麻豆一区二区三区蜜桃免费| 亚洲中文字幕av天堂| 黑人巨大粗物挺进了少妇| 中文字幕久久六月色综合| 一区二区亚洲精品国产精华液| 久久精品国产一区二区三| 亚洲理论在线A中文字幕| 国产中文字幕精品在线| 亚洲av永久一区二区| 国产精品自在拍首页视频8| av在线播放观看国产| 亚洲精品综合一区二区三区| 人妻 日韩精品 中文字幕| 国产精品久久久久无码av色戒| 国产精品久久久久AV福利动漫| 亚洲人成电影在线天堂色| 亚洲一区二区日韩综合久久| 亚洲人成人无码www| 免费午夜无码片在线观看影院| 亚洲熟妇自偷自拍另类| 日本高清在线观看WWW色| 91久久天天躁狠狠躁夜夜| 香蕉久久久久久久av网站| 岛国最新亚洲伦理成人| 久久人人97超碰人人澡爱香蕉| 97久久精品人人做人人爽| 久久国产热这里只有精品| 亚洲全网成人资源在线观看| 国产成人久久综合第一区| 美女自卫慰黄网站| 国产精品久久久久久福利| 亚洲最大天堂在线看视频| 东京热人妻丝袜无码AV一二三区观 | 国产精品久久久一区二区三区| 欧美亚洲h在线一区二区| 亚洲老妇女一区二区三区| 国产精品黄色片| 久操热在线视频免费观看| 在线高清免费不卡全码| 人妻中出无码一区二区三区 |