Webpack提取頁面公共資源的實現(xiàn)
1. 利用html-webpack-externals-plugin 分離基礎(chǔ)庫
在做React開發(fā)時,經(jīng)常需要引入react和react-dom基礎(chǔ)庫,這樣在打包的時候速度就會比較慢,這種情況下我們可以將這些基礎(chǔ)庫忽略掉,將它們通過CDN的方式直接引入,而不打包到bundle文件里面去。
1. 安裝插件
npm i html-webpack-externals-plugin -D
2. 引入插件
const HtmlWebpackExternalsPlugin = require('html-webpack-externals-plugin');3. 使用插件
在 webpack 中配置如下:
module.exports = {
// 其它配置項此處略
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',
},
]
}),
]
};在根頁面 index.html 文件中引入基礎(chǔ)庫:
<!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ǔ)庫</title>
</head>
<body>
<div id="root"></div>
<!-- 引入基礎(chǔ)庫 -->
<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ǔ)庫
此插件是Wabpack4內(nèi)置的,無需安裝,用于替代CommonsChunkPlugin插件。
module.exports = {
optimization: {
splitChunks: {
cacheGroups: {
commons: {
// 匹配出需要分離的包
test: /(react|react-dom)/,
name: 'vendors',
chunks: 'all'
}
}
}
}
};分離出來的文件名前輟為vendors,也要進行配置。

3. 利用SplitChunksPlugin 分離依賴包
此插件是Wabpack4內(nèi)置的,無需安裝,用于替代CommonsChunkPlugin插件。
module.exports = {
optimization: {
splitChunks: {
// 同步還是異步
chunks: 'async',
// 抽離公共包最小的大小(KB)
minSize: 30000,
// 抽離公共包最大的大小(KB)
maxSize: 0,
// 方法最小使用次數(shù)
minChunks: 1,
// 瀏覽器每次請求異步資源的次數(shù)
maxAsyncRequests: 5,
maxInitialRequests: 3,
automaticNameDelimiter: '~',
name: true,
cacheGroups: {
vendors: {
test: /[\\/]node_modules[\\/]/,
priority: -10
}
}
}
}
};chunks 參數(shù)說明:
1. async 異步引入的庫進行分離(默認);
2. initial 同步引入的庫進行分離 ;
3. all 所有引入的庫進進分離(推薦);
4. 利用SplitChunksPlugin 分離頁面公共文件
此插件是Wabpack4內(nèi)置的,無需安裝,用于替代CommonsChunkPlugin插件。
module.exports = {
optimization: {
splitChunks: {
// 分離的包體積的??
minSize: 0,
cacheGroups: {
commons: {
name: 'commons',
chunks: 'all',
// 最?引?次數(shù)為2次
minChunks: 2
}
}
}
}
};分離出來的文件名前輟為commons,也要進行配置。

到此這篇關(guān)于Webpack提取頁面公共資源的實現(xiàn)的文章就介紹到這了,更多相關(guān)Webpack提取公共資源內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
BootStrap點擊下拉菜單項后顯示一個新的輸入框?qū)崿F(xiàn)代碼
這篇文章主要介紹了BootStrap點擊下拉菜單項后顯示一個新的輸入框?qū)崿F(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2016-05-05
JavaScript可折疊區(qū)域?qū)崿F(xiàn)代碼
可折疊區(qū)域的基本思想:通過點擊某個地方來顯示或隱藏屏幕中的某個區(qū)域。2010-10-10
javascript數(shù)字格式化通用類 accounting.js使用
accounting.js 是一個非常小的JavaScript方法庫用于對數(shù)字,金額和貨幣進行格式化。并提供可選的Excel風格列渲染。它沒有依賴任何JS框架。貨幣符號等可以按需求進行定制2012-08-08
ajaxControlToolkit AutoCompleteExtender的用法
昨天在搜索中使用了這個控件,不過不知道為什么在IE中反應(yīng)比較慢2008-10-10

