webpack 持久化缓存

本文介绍了如何使用 webpack 对模块进行拆分,包括公共库、按需加载和公共模块的拆分,以及如何配置 webpack 实现持久化缓存。通过 CommonsChunkPlugin 和 ExtractTextPlugin 插件,实现 CSS 与 JS 分离并优化 chunkhash 的稳定性。文章还讨论了影响缓存失效的因素,如源代码、webpack 运行时代码、模块 ID 和 chunk ID,并提供了相应的优化策略。
摘要由CSDN通过智能技术生成

console.log($.trim(’ do something '));

// src/pageB.js

// 页面 A 和 B 都用到了公共模块 componentA,需要抽离,避免重复加载

import componentA from ‘./common/componentA’;

import componentB from ‘./common/componentB’;

import ‘./css/common.css’

import ‘./css/pageB.css’;

console.log(componentA);

console.log(componentB);

// 用到异步加载模块 asyncComponent,需要抽离,加载首屏速度

document.getElementById(‘xxxxx’).addEventListener(‘click’, () => {

import( /* webpackChunkName: “async” */

‘./common/asyncComponent.js’).then((async) => {

async();

})

})

// 公共模块基本长这样

export default “component X”;

上面的页面内容基本简单涉及到了我们拆分模块的三种模式:拆分公共库,按需加载和拆分公共模块。那么接下来要配置 webpack :

const path = require(‘path’);

const webpack = require(‘webpack’);

const ExtractTextPlugin = require(‘extract-text-webpack-plugin’);

module.exports = {

entry: {

pageA: [path.resolve(__dirname, ‘./src/pageA.js’)],

pageB: path.resolve(__dirname, ‘./src/pageB.js’),

},

output: {

path: path.resolve(__dirname, ‘./dist’),

filename: ‘js/[name].[chunkhash:8].js’,

chunkFilename: ‘js/[name].[chunkhash:8].js’

},

module: {

rules: [

{

// 用正则去匹配要用该 loader 转换的 CSS 文件

test: /.css$/,

use: ExtractTextPlugin.extract({

fallback: “style-loader”,

use: [“css-loader”]

})

}

]

},

plugins: [

new webpack.optimize.CommonsChunkPlugin({

name: ‘common’,

minChunks: 2,

}),

new webpack.optimize.CommonsChunkPlugin({

name: ‘vendor’,

minChunks: ({ resource }) => (

reso

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值