Webpack提取頁(yè)面公共資源的實(shí)現(xiàn)
1. 利用html-webpack-externals-plugin 分離基礎(chǔ)庫(kù)
在做React開(kāi)發(fā)時(shí),經(jīng)常需要引入react和react-dom基礎(chǔ)庫(kù),這樣在打包的時(shí)候速度就會(huì)比較慢,這種情況下我們可以將這些基礎(chǔ)庫(kù)忽略掉,將它們通過(guò)CDN的方式直接引入,而不打包到bundle文件里面去。
1. 安裝插件
npm i html-webpack-externals-plugin -D
2. 引入插件
const HtmlWebpackExternalsPlugin = require('html-webpack-externals-plugin');
3. 使用插件
在 webpack 中配置如下:
module.exports = { // 其它配置項(xiàng)此處略 plugins: [ new HtmlWebpackExternalsPlugin({ externals: [ { module: 'react', entry: 'https://11.url.cn/now/lib/16.2.0/react.min.js', global: 'React', }, { module: 'react-dom', entry: 'https://11.url.cn/now/lib/16.2.0/react-dom.min.js', global: 'ReactDOM', }, ] }), ] };
在根頁(yè)面 index.html 文件中引入基礎(chǔ)庫(kù):
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>分離基礎(chǔ)庫(kù)</title> </head> <body> <div id="root"></div> <!-- 引入基礎(chǔ)庫(kù) --> <script type="text/javascript" src="https://11.url.cn/now/lib/16.2.0/react.min.js"></script> <script type="text/javascript" src="https://11.url.cn/now/lib/16.2.0/react-dom.min.js"></script> </body> </html>
2. 利用SplitChunksPlugin 分離基礎(chǔ)庫(kù)
此插件是Wabpack4內(nèi)置的,無(wú)需安裝,用于替代CommonsChunkPlugin插件。
module.exports = { optimization: { splitChunks: { cacheGroups: { commons: { // 匹配出需要分離的包 test: /(react|react-dom)/, name: 'vendors', chunks: 'all' } } } } };
分離出來(lái)的文件名前輟為vendors,也要進(jìn)行配置。
3. 利用SplitChunksPlugin 分離依賴(lài)包
此插件是Wabpack4內(nèi)置的,無(wú)需安裝,用于替代CommonsChunkPlugin插件。
module.exports = { optimization: { splitChunks: { // 同步還是異步 chunks: 'async', // 抽離公共包最小的大小(KB) minSize: 30000, // 抽離公共包最大的大小(KB) maxSize: 0, // 方法最小使用次數(shù) minChunks: 1, // 瀏覽器每次請(qǐng)求異步資源的次數(shù) maxAsyncRequests: 5, maxInitialRequests: 3, automaticNameDelimiter: '~', name: true, cacheGroups: { vendors: { test: /[\\/]node_modules[\\/]/, priority: -10 } } } } };
chunks 參數(shù)說(shuō)明:
1. async 異步引入的庫(kù)進(jìn)行分離(默認(rèn));
2. initial 同步引入的庫(kù)進(jìn)行分離 ;
3. all 所有引入的庫(kù)進(jìn)進(jìn)分離(推薦);
4. 利用SplitChunksPlugin 分離頁(yè)面公共文件
此插件是Wabpack4內(nèi)置的,無(wú)需安裝,用于替代CommonsChunkPlugin插件。
module.exports = { optimization: { splitChunks: { // 分離的包體積的?? minSize: 0, cacheGroups: { commons: { name: 'commons', chunks: 'all', // 最?引?次數(shù)為2次 minChunks: 2 } } } } };
分離出來(lái)的文件名前輟為commons,也要進(jìn)行配置。
到此這篇關(guān)于Webpack提取頁(yè)面公共資源的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Webpack提取公共資源內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
追蹤discord.js中刪除消息的用戶(hù)方法實(shí)例詳解
這篇文章主要為大家介紹了如何追蹤discord.js中刪除消息的用戶(hù)方法實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01BootStrap點(diǎn)擊下拉菜單項(xiàng)后顯示一個(gè)新的輸入框?qū)崿F(xiàn)代碼
這篇文章主要介紹了BootStrap點(diǎn)擊下拉菜單項(xiàng)后顯示一個(gè)新的輸入框?qū)崿F(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2016-05-05JavaScript可折疊區(qū)域?qū)崿F(xiàn)代碼
可折疊區(qū)域的基本思想:通過(guò)點(diǎn)擊某個(gè)地方來(lái)顯示或隱藏屏幕中的某個(gè)區(qū)域。2010-10-10Web前端開(kāi)發(fā)工具——bower依賴(lài)包管理工具
Bower 是 twitter 推出的一款包管理工具,基于nodejs的模塊化思想,把功能分散到各個(gè)模塊中,讓模塊和模塊之間存在聯(lián)系,通過(guò) Bower 來(lái)管理模塊間的這種聯(lián)系,本文給大家介紹bower依賴(lài)包管理工具,感興趣的朋友一起學(xué)習(xí)2016-03-03javascript數(shù)字格式化通用類(lèi) accounting.js使用
accounting.js 是一個(gè)非常小的JavaScript方法庫(kù)用于對(duì)數(shù)字,金額和貨幣進(jìn)行格式化。并提供可選的Excel風(fēng)格列渲染。它沒(méi)有依賴(lài)任何JS框架。貨幣符號(hào)等可以按需求進(jìn)行定制2012-08-08ajaxControlToolkit AutoCompleteExtender的用法
昨天在搜索中使用了這個(gè)控件,不過(guò)不知道為什么在IE中反應(yīng)比較慢2008-10-10詳解javascript的變量與標(biāo)識(shí)符
這篇文章主要為大家介紹了javascript的變量與標(biāo)識(shí)符,感興趣的小伙伴們可以參考一下2016-01-01