<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:22  Eword  閱讀(104)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产成人a在线观看视频免费| 囊谦县| 老司机精品成人无码AV| 精品少妇无码一区二区三批| 中文字幕精品亚洲人成在线| 国产睡熟迷奷系列网站| 久久精品人妻无码一区二区三区| 白色丝袜国产在线视频| 国产色无码精品视频免费| 成人动漫综合网| 久久国产免费观看精品| 孕妇特级毛片ww无码内射| 国产强奷在线播放免费| 天堂mv在线mv免费mv香蕉| AV最新高清无码专区| 韩国三级网一区二区三区| 无码人妻丰满熟妇啪啪| 亚洲天天堂天堂激情性色| 亚洲人成色99999在线观看| 99精品久久久久久久婷婷| 永久免费在线观看蜜桃视频| 色www视频永久免费| 国产精品二区中文字幕| 欧洲人与动牲交α欧美精品| 久久精品国产亚洲不AV麻豆| 哈密市| 国产精品国产三级在线专区| 漂亮人妻中文字幕丝袜| 人与禽交av在线播放| 亚洲av无码乱码在线观看牲色| 国产精品不卡一区二区三区| 疯狂三人交性欧美| 亚洲自拍偷拍福利小视频| 一区二区中文字幕av| 襄樊市| 无遮挡高潮国产免费观看| 韩国三级+mp4| 色欲综合久久中文字幕网| 亚洲精品国产一二三区| 午夜福制92视频| 最新午夜男女福利片视频|