webpack中热模块更新
"scripts": {
"start": "webpack-dev-server",
},
在加热更新之前,我们运行npm run start,会发现之前我们打包有个dist目录,为什么运行这个命令的时候,dist目录没有了。实际上,webpack-dev-server,还是会对src目录下进行打包的。但是打包生成的文件,他并不会放在dist目录下。而是放到电脑中的内存里面。这样的话,可以有效的提升打包的速度。让我们开发更快,所以不用担心。
var btn = document.createElement('button');
btn.innerHTML = '新增';
document.body.appendChild(btn);
btn.onclick = function() {
var div = document.createElement('div');
div.innerHTML = 'item';
document.body.appendChild(div);
}
这个js是点击一下新增,就新增一个item的div。现在我要实现一个样式的效果。偶数的时候给他加个背景
div:nth-of-type(odd) {
background: yellow;
}
module.exports = {
// 起个服务器
devServer: {
// 这个意思是服务器要生成在哪个文件夹下
contentBase:'./dist',
// 启动的时候自动打开浏览器,然后自动访问这个服务器地址
open:true,
// 开启Hot Module Replacement
hot: true,
// 即便hmr的功能没有生效,浏览器也不要自动刷新
hotOnly: true
},
// HtmlWebpackPlugin会在打包结束后,自动生成一个html文件,并把打包生成的js自动引入到这个html文件中
plugins: [
new HtmlWebpackPlugin({
template: 'src/index.html'
}),
new CleanWebpackPlugin(),
// 当dev-server,两项host配置搞定后,再使用这个插件后,hmr功能就生效了
new webpack.HotModuleReplacementPlugin()
],
}
module.exports = {
// 起个服务器
devServer: {
// 这个意思是服务器要生成在哪个文件夹下
contentBase:'./dist',
// 启动的时候自动打开浏览器,然后自动访问这个服务器地址
open:true
},
// HtmlWebpackPlugin会在打包结束后,自动生成一个html文件,并把打包生成的js自动引入到这个html文件中
plugins: [
new HtmlWebpackPlugin({
template: 'src/index.html'
}),
new CleanWebpackPlugin()
],
}
import counter from './counter';
import number from './number'; counter();
number();
function counter() {
var div = document.createElement('div');
div.setAttribute('id', 'counter');
div.innerHTML = 1;
div.onclick = function() {
div.innerHTML = parseInt(div.innerHTML, 10) + 1;
}
document.body.appendChild(div);
export default counter;
number.js
function number() {
var div = document.createElement('div');
div.setAttribute('id', 'number');
div.innerHTML = 1000;
document.body.appendChild(div);
}
export default number;
module.exports = {
// 起个服务器
devServer: {
// 这个意思是服务器要生成在哪个文件夹下
contentBase:'./dist',
// 启动的时候自动打开浏览器,然后自动访问这个服务器地址
open:true,
// 开启Hot Module Replacement
hot: true,
// 即便hmr的功能没有生效,浏览器也不要自动刷新
hotOnly: true
},
// HtmlWebpackPlugin会在打包结束后,自动生成一个html文件,并把打包生成的js自动引入到这个html文件中
plugins: [
new HtmlWebpackPlugin({
template: 'src/index.html'
}),
new CleanWebpackPlugin(),
// 当dev-server,两项host配置搞定后,再使用这个插件后,hmr功能就生效了
new webpack.HotModuleReplacementPlugin()
],
}
发现number代码改成2000,页面上的1000并没有变成2000。这个时候需要自己去加点代码
import counter from './counter';
import number from './number'; counter();
number(); if(module.hot) {
module.hot.accept('./number', ()=>{
let removeNode = document.getElementById('number');
document.body.removeChild(removeNode);
number();
})
}
webpack中热模块更新的更多相关文章
- Webpack & The Hot Module Replacement热模块替换原理解析
Webpack & The Hot Module Replacement热模块替换原理解析 The Hot Module Replacement(HMR)俗称热模块替换.主要用来当代码产生变化 ...
- Webpack中hash与chunkhash的区别,以及js与css的hash指纹解耦方案
文件的hash指纹通常作为前端静态资源实现增量更新的方案之一,Webpack是目前最流行的开源编译工具之一,其强大的功能也带来很多坑(当然,大部分麻烦其实都可以在官方文档中找到答案). 比如,在Web ...
- webpack中如何使用vue
1.安装 vue包:npm i vue -S 2.由于在webpack中,推荐使用.vue这个组件模版文件来定义组件,不然会出现vue.js移动和一些高级语法的不支持,因此需要安装能解析这种文件的lo ...
- webpack中配置Babel
Babel是一个javascript编译器,可以将ES6和更新的js语法转换成ES5的,使代码在较老的浏览器里也能正常运行. 一.安装 npm install --save-dev babel-loa ...
- Webpack的详细配置,[Webpack中各种loader的安装配置]
在使用webpack的时候,你是不是被以下这种报错所困扰: 注意看 黄色框中标注的 You may need an appropriate loader to handle this file typ ...
- webpack与browser-sync热更新原理深度讲解
本文首发于CSDN网站,下面的版本又经过进一步的修订.原文:webpack与browser-sync热更新原理深度讲解本文包含如下内容: webpack-hot-middleware EventSou ...
- vue2.0基础知识,及webpack中vue的使用
## 基础指令 ## [v-cloak]{ Display:none; } <p v-cloak>xx{{msg}}xx</p> //解决闪烁问 ...
- vue-cli3.x中使用axios发送请求,配合webpack中的devServer编写本地mock数据接口(get/post/put/delete)
vue-cli3.x中使用axios发送请求,配合webpack中的devServer编写本地mock数据接口(get/post/put/delete) 手把手式笔记 Axios配置 安装 axios ...
- 17 webpack中babel的配置
在webpack中,默认只能处理一部分ES6的新语法,一些更高级的ES6语法或者ES7语法, webpack是处理不了的:这时候,就需要借助于第三方的loader,来帮助webpack处理这些高级的语 ...
随机推荐
- Java - 关于泛型
自Java 1.5开始使用的泛型,泛型给人比较直观的印象是..."尖括号里写了类型我就不用检查类型也不用强转了". 确实,那先从API的使用者的角度上想问题,泛型还有什么意义? D ...
- 初学SpringMVC,使用MVC进行文件上传
最近在做一个文件上传的功能,走了不少弯路,话不多说,直接上代码: 导入各种jar包,首先是applicationContext.xml配置文件中: <!-- 配置文件解析器 --> < ...
- ssh 连接慢问题
连接先看报错: There were 11 failed login attempts since the last successful login. 先前有上百上千失败login,被攻击了,把短时 ...
- 可持久化trie(BZOJ5338: [TJOI2018]xor)
题面 BZOJ Sol 显然是要维护一个区域的 \(trie\) 树,然后贪心 区间 \(trie\) 树??? 可持久化 \(trie\) 树??? 直接参考主席树表示出区间的方法建立 \(trie ...
- MvcForum中文版+PostgreSql源码下载
演示地址:http://bbs.hfenxiao.com 因为种处原因在家休假,闲来无事,便将去年关注的一个基于asp.net mvc论坛程序拿出来做了一些调整. 据说PostgreSql是世界上功能 ...
- GDAL2.0编译——32位和64位
准备工作: Source下载,这里下载对应的GDAL版本 https://trac.osgeo.org/gdal/wiki/DownloadSource 懒得编译也可以在这里下载对应版本 https: ...
- Springmvc和Mybatis中常用的注解
使用注解来构造IoC容器 用注解来向Spring容器注册Bean.需要在applicationContext.xml中注册<context:component-scan base-package ...
- Attribute+Reflection,提高代码重用
这篇文章两个目的,一是开阔设计的思路,二是实例代码可以拿来就用. 设计的思路来源于<Effective c#>第一版Item 24: 优先使用声明式编程而不是命令式编程.特别的地方是,希望 ...
- ActiveMQ 用户名密码设置
用户名密码信息保存在conf/jetty-realm.properties文件中 按顺序分别是:用户名.密码.角色名 另:ActiveMQ使用的是jetty服务器, 可以通过设置conf/jetty. ...
- 如何激活 Trend Micro Deep Security Agent
Deep Security 即服务包括反恶意软件保护.防火墙.入侵防御系统和完整性监视.Trend Micro Deep Security Agent (DSA) 可以配合 Deep Security ...