splitchunk(如何將指定文件從主包拆分為單獨的js文件)

1. 說明

webpack打包會默認將入口文件引入依賴js打包為一個入口文件,導致這個文件會比較大,頁面首次加載時造成加載時間較長
可通過splitchunk配置相應的規則,對匹配的規則打包為單獨的js,減小入口js的體積

2. 示例

通過正則匹配,會把入口中引入的c.js打包為單獨c.js

  • webpack.config.js
const path = require('path');
module.exports = {entry: "./src/index.js",output: {path: path.resolve(__dirname, 'dist1'),publicPath: "/dist1/",},optimization: {minimize: false,splitChunks: {minSize: 0,cacheGroups: {cJs: {test: /c\.js$/,  // 通過正則匹配,會把入口中引入的c.js打包為單獨c.js,在html里也需引入c.jsname: 'c',chunks: 'all',priority: 10 // 設置較高的優先級}}}}
}
  • index.js
import a from './a.js'
import './cc/c.js'
import './c.js'a()
  • a.js
const testArrowFuntion = () => {console.log('this is testArrowFuntion')
}const aSignFuntion = () => {testArrowFuntion()console.log('this is a')
}export default aSignFuntion
  • cc/c.js
const getUuid = (len, radix) => {var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('')var uuid = []var iradix = radix || chars.lengthif (len) {for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix]} else {var ruuid[8] = uuid[13] = uuid[18] = uuid[23] = ''uuid[14] = '4'for (i = 0; i < 36; i++) {if (!uuid[i]) {r = 0 | Math.random() * 16uuid[i] = chars[(i === 19) ? (r & 0x3) | 0x8 : r]}}}return uuid.join('')
}export {getUuid
}
  • c.js
console.log('This is c.js');
window.sunlight = 'ght'

3. 結果展示

  • 大包會生成 mains.js、c.js 兩個文件 正常不配置splitchunk情況只會生成一個main.js
    在這里插入圖片描述
  • main.js中只包含了a.js代碼
    在這里插入圖片描述
  • c.js 文件包含了 cc/c.js、c.js 兩部分的代碼

在這里插入圖片描述
【注】
頁面里需要把main.js和c.js都引入

4. main.js里是如何加載 c.js 里的代碼的呢

  • mainx.js 會對window[“webpackJsonp”].push進行劫持,在c.js里調用window[“webpackJsonp”].push時,會觸發main.js里的webpackJsonpCallback 回調函數
    在這里插入圖片描述
  • webpackJsonpCallback 函數里會將依賴的代碼獲取到,并用對應chunkId關聯對應的模塊代碼

在這里插入圖片描述

  • c.js 會默認調用window[“webpackJsonp”] || []).push 添加對應的模塊代碼
    在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/80774.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/80774.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/80774.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

postgres 導出導入(基于數據庫,模式,表)

在 PostgreSQL 中&#xff0c;導出和導入數據庫、模式&#xff08;schema&#xff09;或表的數據可以使用多種工具和方法。以下是常用的命令和步驟&#xff0c;分別介紹如何導出和導入整個數據庫、特定的模式以及單個表的數據。 一、導出數據 1. 使用 pg_dump 導出整個數據庫…

第十一天 主菜單/設置界面 過場動畫(Timeline) 成就系統(Steam/本地) 多語言支持

前言 對于剛接觸Unity的新手開發者來說&#xff0c;構建完整的游戲系統往往充滿挑戰。本文將手把手教你實現游戲開發中最常見的四大核心系統&#xff1a;主菜單界面、過場動畫、成就系統和多語言支持。每個模塊都將結合完整代碼示例&#xff0c;使用Unity 2022 LTS版本進行演示…

深入探索Python Pandas:解鎖數據分析的無限可能

放在前頭 深入探索Python Pandas&#xff1a;解鎖數據分析的無限可能 深入探索Python Pandas&#xff1a;解鎖數據分析的無限可能 在當今數據驅動的時代&#xff0c;高效且準確地處理和分析數據成為了各個領域的關鍵需求。而Python作為一門強大且靈活的編程語言&#xff0c;…

小集合 VS 大集合:MySQL 去重計數性能優化

小集合 VS 大集合&#xff1a;MySQL 去重計數性能優化 前言一、場景與問題 &#x1f50e;二、通俗執行流程對比三、MySQL 執行計劃解析 &#x1f4ca;四、性能瓶頸深度剖析 &#x1f50d;五、終極優化方案 &#x1f3c6;六、總結 前言 &#x1f4c8; 測試結果&#xff1a; 在…

3、Linux操作系統下,linux的技術手冊使用(man)

linux系統內置技術手冊&#xff0c;方便開發人員查閱Linux相關指令&#xff0c;提升開發效率 man即是manual的前三個字母&#xff0c;有時候遇事不決&#xff0c;問個人&#xff08;man&#xff09; 其在線網址為&#xff1a;man 還有man網站的作者寫的書&#xff0c;可以下…

京東商品詳情數據爬取難度分析與解決方案

在當今數字化商業時代&#xff0c;電商數據對于市場分析、競品研究、價格監控等諸多領域有著不可估量的價值。京東&#xff0c;作為國內首屈一指的電商巨頭&#xff0c;其商品詳情頁蘊含著海量且極具價值的數據&#xff0c;涵蓋商品價格、庫存、規格、用戶評價等關鍵信息。然而…

正確應對監管部門的數據安全審查

首席數據官高鵬律師團隊編著 在當今數字化時代&#xff0c;數據安全已成為企業及各類組織面臨的重要議題&#xff0c;而監管部門的數據安全審查更是關乎其生存與發展的關鍵挑戰。隨著法律法規的不斷完善與監管力度的加強&#xff0c;如何妥善應對這一審查&#xff0c;避免潛在…

三星One UI安全漏洞:剪貼板數據明文存儲且永不過期

三星One UI系統曝出重大安全漏洞&#xff0c;通過剪貼板功能導致數百萬用戶的敏感信息面臨泄露風險。 剪貼板數據永久存儲 安全研究人員發現&#xff0c;運行Android 9及以上系統的三星設備會將所有剪貼板內容——包括密碼、銀行賬戶詳情和個人消息——以明文形式永久存儲&am…

動態規劃求解leetcode300.最長遞增子序列(LIS)詳解

給你一個整數數組 nums &#xff0c;找到其中最長嚴格遞增子序列的長度。 子序列 是由數組派生而來的序列&#xff0c;刪除&#xff08;或不刪除&#xff09;數組中的元素而不改變其余元素的順序。例如&#xff0c;[3,6,2,7] 是數組 [0,3,1,6,2,2,7] 的子序列。 示例 1&#…

Rule.resourceQuery(通過路徑參數指定loader匹配規則)

1. 說明 在 webpack 4 中&#xff0c;Rule.resourceQuery 是一個用于根據文件路徑中的 查詢參數&#xff08;query string&#xff09; 來匹配資源的配置項。它允許你針對帶有特定查詢條件的文件&#xff08;如 file.css?inline 或 image.png?raw&#xff09;應用不同的加載…

快速上手 MetaGPT

1. MetaGPT 簡介 在當下的大模型應用開發領域&#xff0c;Agent 無疑是最炙手可熱的方向&#xff0c;這也直接催生出了眾多的 Agent 開發框架。在這之中&#xff0c; MetaGPT 是成熟度最高、使用最廣泛的開發框架之一。 MetaGPT 是一款備受矚目的多智能體開發框架&#xff0c…

新聞數據接口開發指南:從多源聚合到NLP摘要生成

隨著人工智能&#xff08;AI&#xff09;技術的飛速發展&#xff0c;新聞行業也迎來了新的變革。AI不僅能夠自動化生成新聞內容&#xff0c;還能通過智能推薦系統為用戶提供個性化的新聞體驗。萬維易源提供的“新聞查詢”API接口&#xff0c;結合了最新的AI技術&#xff0c;為開…

每天五分鐘深度學習框架pytorch:使用visdom繪制損失函數圖像

visdom的安裝 pip install visdom如果安裝失敗 pip install --upgrade visdom開啟visdom python -m visdom.server nohup python -m visdom.server后臺啟動然后就會出現,下面的頁面,我們可以使用下面的鏈接打開visdom頁面 Visdom中有兩個重要概念: env環境。不同環境的可…

UnityEditor - 調用編輯器菜單功能

例如: 調用Edit/Frame Selected In Scene EditorApplication.ExecuteMenuItem("Edit/Frame Selected in Scene"); EditorApplication.ExecuteMenuItem("Edit/Lock view to Selected");

電化學-論文分享-NanoStat: An open source, fully wireless potentiostat

電化學-論文分享-NanoStat: An open source, fully wireless potentiostat 發現了一篇近期有關便攜式電化學工作站相關方面的論文&#xff08;2022&#xff09;&#xff0c;并且全部工作內容都是開源的&#xff0c;硬件電路圖、PCB板、嵌入式代碼以及網頁代碼、設備外殼所有資…

ZYNQ----------PS端入門(四)(根文件系統進emmc,鏡像和設備樹進flash)

文章目錄 系列文章目錄前言一、根文件系統是什么&#xff1f;二、根文件系統燒進emmc1.emmc是什么&#xff1f;2.根文件系統的位置3.分離根文件系統步驟1.14.分離根文件系統步驟1.25.分離根文件系統步驟2.1 三、根文件系統進emmc&#xff0c;設備樹和鏡像進flash 系列文章目錄 …

uniapp+vue3移動端實現輸入驗證碼

ios安卓 uniappvue3 微信小程序端 <template><view class"verification-code"><view class"verification-code__display"><block v-for"i in numberArr" :key"i"><view:class"[verification-code__d…

如何選擇游戲支付平臺呢?

如果要選擇一個游戲支付平臺的話&#xff0c;那么你可以考慮一下這個平臺&#xff1a;功能非常多&#xff0c;支付模式很高效&#xff0c;功能很全&#xff0c;服務很貼心&#xff0c;資金安全靠得住&#xff0c;安全認證模式也很可靠。 第二&#xff0c;結算方法也很多&#x…

前端如何獲取文件的 Hash 值?多種方式詳解、對比與實踐指南

文章目錄 前言一、Hash 值為何重要&#xff1f;二、Hash 值基礎知識2.1 什么是 Hash&#xff1f;2.2 Hash 在前端的應用場景2.3 常見的 Hash 算法&#xff08;MD5、SHA 系列&#xff09; 三、前端獲取文件 Hash 的常用方式3.1 使用 SparkMD5 計算 MD5 值3.2 使用 Web Crypto AP…

【Java學習筆記】類與對象

類與對象 什么是類&#xff1f; 知識遷移&#xff1a;類比 C 語言中的結構體 類的描述 類是一個對象的抽象&#xff0c;從字面意思就表示一個類的事物&#xff0c;類具有屬性和方法&#xff08;行為&#xff09;&#xff0c;對象是類的一個具體表現 總結&#xff1a;類是對象…