webpack 热替换html,webpack热替换原理(示例代码)

前期准备:

2a22ca79eed0486fb0d07b912d6e8877.jpg

46f22c339a984c5cb0d3fe57936502c4.jpg

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

2a22ca79eed0486fb0d07b912d6e8877.jpg

46f22c339a984c5cb0d3fe57936502c4.jpg

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

2a22ca79eed0486fb0d07b912d6e8877.jpg

46f22c339a984c5cb0d3fe57936502c4.jpg

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

View Code

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

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

406ccd4871a44bc6b87eecb8771e9174.jpg

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

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

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

hot-update.json:

4223cfd1a29540e29f066c009103e21f.jpg

解析:

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

hot-update.js:

9f59251b944446cf8f1fb71bf7cfe4f8.jpg

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

浏览器控制台输出:

58817052556f4ae59c631a7b3e6128fe.jpg

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值