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

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

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

      webpack生產環境優化:dll

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

      webpack生產環境優化:dll

      • dll動態鏈接庫
        • 目的:單獨的將多個指定的第三方庫打包成一個chunk。
        • 意義:將不同的庫分割開來,實現代碼分割和避免重復打包,在節省打包時間的同時方便按需加載和預加載的實現。

      一、打包指定的第三方庫

      1.1、創建dll打包配置文件

      根目錄下創建webpack.dll.js配置文件

      /* 
          路徑:./webpack.dll.js (名字可任意取)
          使用dll技術,對某些第三方庫(如:jquery、react、vue…)進行單獨打包
          當你運行 webpack 時,默認查找 webpack.config.js 配置文件
          需求: 需要運行 webpack.dll.js 打包
              > webpack --config webpack.dll.js
      */
      
      const { resolve } = require('path');
      const webpack = require('webpack');
      
      module.exports = {
          entry: {
              // 最終打包生成的[name]-->jquery
              // ['jquery']--> 要打包的庫是jquery
              jquery: ['jquery']
          },
          output: {
              filename: '[name].js',
              path: resolve(__dirname, 'dll'),
              library: '[name]_[hash]' //打包的庫里面向外泰露出去的內容叫什么名字。
          },
          plugins: [
              // 打包生成一個manifest.json文件,提供和jquery映射關系。
              new webpack.DllPlugin({
                  name: '[name]_[hash]', // 映射庫暴露的內容名稱
                  path: resolve(__dirname, 'dll/manifest.json'),  // 映射文件輸出路徑
              })
          ],
          mode: 'production'
      
      }
      

      1.2、打包dll

      # 根據webpack.dll.js配置的內容打包
      > webpack --config webpack.dll.js
      

      1.3、工程文件目錄

      .
      ├── dll    // 打包后生成的目錄
      │   ├── jquery.js    // 根據webpack.dll.js配置獨立打包出來的jquery
      │   └── manifest.json   //映射文件
      ├── src
      │   ├── index.html
      │   └── index.js
      ├── webpack.config.js
      └── webpack.dll.js    //打包配置文件
      

      二、應用單獨打包的dll

      2.1、修改webpack.config.js

      /*
          webpack.config.js webpack的配置文件
          路徑: ./webpack.config.js
      */
      
      // resolve用來拼接絕對路徑的方法
      const { resolve } = require('path');
      // 引入打包 html 文件的插件 html-webpack-plugin
      const HtmlWebpackPlugin = require('html-webpack-plugin');
      // 引入webpack
      const webpack = require('webpack');
      // 引入add-asset-html-webpack-plugin
      const AddAssetHtmlWebpackPlugin =require('add-asset-html-webpack-plugin');
      
      module.exports = {
          // webpack配置
          // 入口起點文件
          entry: './src/index.js',
          // 輸出
          output: {
              // 輸出文件名
              filename: 'built.js',
              // 輸出路徑
              // __dirname nodejs的變量,代表當前文件的目錄絕對路徑
              path: resolve(__dirname, 'build'),
          },
          // loader的配置
          module: {
              rules: [
                  // 詳細loader配置
                  //不同文件必須配置不同loader處理
                  // 打包 css 文件的詳細loader配置
                  {
                      // 匹配哪些文件
                      test: /\.css$/,
                      // 使用哪些loader進行處理
                      use: [
                          // use數組中loader執行順序:從右到左,從下到上依次執行
                          // 創建style標簽,將js中的樣式資源插入進行,添加到head中生效
                          'style-loader',
                          // 將css文件變成commonjs模塊加載js中,里面內容是樣式字符串
                          'css-loader',
      
                      ],
                  },
                  //打包less 文件的詳細loader配置
                  {
                      //匹配哪些文件
                      test: /\.less$/,
                      //使用哪些loader進行處理
                      use: [
                          // use數組中loader執行順序:從右到左,從下到上依次執行
                          //創建style標簽,將js中的樣式資源插入進行,添加到head中生效
                          'style-loader',
                          //將css文件變成commonjs模塊加載js中,里面內容是樣式字符串
                          'css-loader',
                          //將less文件編譯成css文件
                          //需要下載less-loader和less
                          'less-loader'
                      ]
                  },
              ]
          },
          // plugins的配置
          plugins: [
              // 詳細的plugins配置
              // 詳細的plugins配置
              // html-webpack-plugin
              // new HtmlWebpackPlugin() 功能:默認會創建一個空的HTML, 自動引入打包輸出的所有資源(JS/CSS)
              //需求:需要有結構的HTML文件
              new HtmlWebpackPlugin({
                  //復制../src/index.html'文件,并自動引入打包輸出的所有資源(JS/CS5)
                  template: './src/index.html'
              }),
              // 告訴webpack哪些庫不參與打包,同時使用時的名稱也得變~
              new webpack.DllReferencePlugin({
                  manifest: resolve(__dirname, 'dll/manifest.json')
      
              }),
              // 將某個dll文件打包輸出去,并在html中自動引入該資源
              new AddAssetHtmlWebpackPlugin({
                  filepath: resolve(__dirname, 'dll/jquery.js')
              })
          ],
          // 模式  development  開發環境,production 生產環境
          mode: 'development',
          // 生產環境下會自動壓縮js代碼
          // mode: 'production'
      
      };
      

      核心配置

      /*
          webpack.config.js webpack的配置文件
          路徑: ./webpack.config.js
      */
      
          ……
          
      // 引入webpack
      const webpack = require('webpack');
      // 引入add-asset-html-webpack-plugin
      const AddAssetHtmlWebpackPlugin =require('add-asset-html-webpack-plugin');
      
          ……
      
          // plugins的配置
          plugins: [
              // 詳細的plugins配置
      
              // 告訴webpack哪些庫不參與打包,同時使用時的名稱也得變~
              new webpack.DllReferencePlugin({
                  manifest: resolve(__dirname, 'dll/manifest.json')
      
              }),
              // 將某個dll文件打包輸出去,并在html中自動引入該資源
              new AddAssetHtmlWebpackPlugin({
                  filepath: resolve(__dirname, 'dll/jquery.js')
              })
          ],
      
      

      webpack.DllReferencePlugin:獨立打包的dll庫,不在打包到輸出的chunk中。
      AddAssetHtmlWebpackPlugin:在html中引入指定獨立打包的dll庫資源,并將該資源獨立打包出去。

      2.2、其他工程文件

      <!-- ./src index.html -->
      <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>webpack</title>
      </head>
      <body>
          <h1 id="title">hello dll</h1>
      </body>
      </html>
      
      // 入口文件
      // ./src/index.js
      import { $ } from 'jquery';
      
      console.log($);
      

      2.3、構建打包

      > npx webpack 
      

      2.4、工程文件目錄

      .
      ├── build   //構建打包生成的目錄
      │   ├── built.js     
      │   ├── index.html
      │   └── jquery.js   //獨立打包,并在html中被引入的jquery庫資源
      ├── dll    // 打包后生成的目錄
      │   ├── jquery.js    // 根據webpack.dll.js配置獨立打包出來的jquery
      │   └── manifest.json   //映射文件
      ├── src
      │   ├── index.html
      │   └── index.js       // 入口文件,使用jquery包
      ├── webpack.config.js
      └── webpack.dll.js    //打包配置文件
      
      // 入口文件
      // ./src/index.js
      import { $ } from 'jquery';
      
      console.log($);
      
      <!-- 生成的 index.html 文件,./build/index.html -->
      <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>webpack</title>
      </head>
      <body>
          <h1 id="title">hello dll</h1>
          <script src="built.js"></script>
          <!-- AddAssetHtmlWebpackPlugin 插件引入的資源 -->
          <script src="jquery.js"></script>
      </body>
      </html>
      
      posted @ 2023-08-28 22:39  影烏  閱讀(357)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 日韩av无码一区二区三区| 久久国产免费观看精品3| 鄂州市| av一本久道久久综合久久鬼色| 国产在线观看播放av| 伊人久久精品久久亚洲一区| 自拍偷拍视频一区二区三区| 中文字幕精品人妻丝袜| 色狠狠一区二区三区香蕉| 国产精品www夜色视频| 国产成熟女人性满足视频| 天天躁久久躁日日躁| 一区二区三区四区亚洲自拍| 欧美一本大道香蕉综合视频| 宿迁市| 激情亚洲内射一区二区三区| 国产免费高清69式视频在线观看| 玛曲县| 国产精品无码无卡在线播放| 在线中文字幕国产一区| 亚洲无av在线中文字幕| 精品无码人妻一区二区三区| 亚洲综合一区二区国产精品| 日本一道一区二区视频| 日韩一区二区三区一级片| 久久一本人碰碰人碰| 国产AV国片精品有毛| 亚洲精品一区二区三天美| 2022最新国产在线不卡a| 思思热在线视频精品| jizz视频在线观看| 欧洲美女黑人粗性暴交视频| 激情四射激情五月综合网| 亚洲ΑV久久久噜噜噜噜噜| 阳山县| 久久99精品久久久大学生| 国产精品熟女孕妇一区二区| 成人免费无码大片A毛片抽搐色欲| 日韩精品一区二区蜜臀av| 深夜福利啪啪片| 久久视频这里只精品|