webpack 热替换html,webpack热替换原理

前期准备:

071b9c07855ff108dbf93e9ebb883df3.png

ef0b22e376e38997e907b437a93e4cfe.png

const path = require('path');

const HtmlWebpackPlugin= require('html-webpack-plugin');

const CleanWebpackPlugin= require('clean-webpack-plugin')var ManifestPlugin = require('webpack-manifest-plugin');

const webpack= require('webpack');

module.exports={

entry: {

main:'./src/main.js'},

devServer: {

historyApiFallback:true,

contentBase:'./dist'},

module: {

rules: [

{

test:/\.css$/,

use: ['style-loader', 'css-loader']

},{

test:/\.(png|jpg|gif|svg)$/,//loader是use[{loader}]的简写

loader: 'file-loader',

options: {

name:'[name].[ext]?[hash]'}

},{

test:/\.vue$/,

loader:'vue-loader',

options: {

loaders: {'scss': 'vue-style-loader!css-loader!sass-loader','sass': 'vue-style-loader!css-loader!sass-loader?indentedSyntax',

}//other vue-loader options go here

}

}

]

},

devtool:'inline-source-map',

output: {//非覆盖更新

filename: '[name].js',

path: path.resolve(__dirname,'dist'),

publicPath:'/a/'},

};

View Code

071b9c07855ff108dbf93e9ebb883df3.png

ef0b22e376e38997e907b437a93e4cfe.png

import chunk1 from './chunk1'import chunk2 from'./chunk2'import aa from'./aa.css'

var jquery =require('jquery')var angular =require('angular')

console.log(333)

document.οnclick= function(){

console.log(aa)

}

console.log(jquery('body'))

console.log(angular)if(module.hot){

module.hot.accept('./chunk1.js');

}

View Code

071b9c07855ff108dbf93e9ebb883df3.png

ef0b22e376e38997e907b437a93e4cfe.png

var chunk1=2;var a= 12399exports.chunk1=chunk1;

View Code

让我们先进行一次热加载:修改chunk1.js,将a的值改为123

此时,webpack会生成两份文件,如下图:

07225b014ec8f3b70713d2214c85b628.png

分别是chunkNumber+previousHash+hot-update.json和chunkNumber+previousHash+hot-update.js

previousHash上一次生成的hash值(每一次构建都会生成一个hash值)

这些文件处于内存中,因此我们在浏览器内查看具体内容:

hot-update.json:

b43b660683f64950fb396af7d6edb528.png

解析:

h(hash)当前生成的hash值, c(chunkHash) 发生变更module的编号,chunk1的编号是0

hot-update.js:

c05ca53cb4298ebf71ce682526280971.png

webpackHotUpdate函数的三个参数分别为: 对编号为0的module进行更新,更新module的编号,及新内容

浏览器控制台输出:

2d6e367bdc5fb6a47db9905d6831658e.png

5即更新module的编号,与webpackHotUpdate对应

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值