首页 >> js开发 >> js详解webpack的文件监听实现(热更新)js大全
js详解webpack的文件监听实现(热更新)js大全
发布时间: 2021年1月13日 | 浏览:
| 分类:js开发
前言前言前言文件监听是在源码发生变化时,自动重新构建出新的输出文件。
webpack 开启监听模式,有两种方式:
1.启动 webpack 命令时,带上 --watch 参数。
唯一缺点:需要手动刷新才能看到变化;
2.在配置 webpack.config.js 中设置 watch: true。
优点:
(1) WDS 不刷新浏览器
(2) WDS 不输出文件,⽽是放在内存中
(3) 使⽤用 HotModuleReplacementPlugin 插件1 第一种方式, --watch1 第一种方式, --watch1 第一种方式, --watch1.1 配置package.json
{
// ...
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack",
"watch": "webpack --watch" // 新增配置
}
// ...
}
{
// ...
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack",
"watch": "webpack --watch" // 新增配置
}
// ...
}1.2 到控制台输入 npm run watch npm run watch1.3 修改文件,保存后,会自动打包,到浏览器刷新,才能看到变化。1.4 文件监听的原理理分析轮询判断文件的最后编辑时间是否变化
某个⽂件发⽣生了了变化,并不会⽴刻告诉监听者,⽽是先缓存起来,等 aggregateTimeout
module.export = {
//默认 false,也就是不不开启
watch: true,
//只有开启监听模式时,watchOptions才有意义
wathcOptions: {
//默认为空,不监听的文件或者文件夹,支持正则匹配
ignored: /node_modules/,
//监听到变化发生后会等300ms再去执行,默认300ms
aggregateTimeout: 300,
//判断文件是否发生变化是通过不停询问系统指定文件有没有变化实现的,默认每秒问1000次
poll: 1000
}
}
module.export = {
//默认 false,也就是不不开启
watch: true,
//只有开启监听模式时,watchOptions才有意义
wathcOptions: {
//默认为空,不监听的文件或者文件夹,支持正则匹配
ignored: /node_modules/,
//监听到变化发生后会等300ms再去执行,默认300ms
aggregateTimeout: 300,
//判断文件是否发生变化是通过不停询问系统指定文件有没有变化实现的,默认每秒问1000次
poll: 1000
}
}
2 第二种方式,在配置 webpack.config.js 中设置 watch: true(热更新:webpack-dev-server)2 第二种方式,在配置 webpack.config.js 中设置 watch: true(热更新:webpack-dev-server)2 第二种方式,在配置 webpack.config.js 中设置 watch: true(热更新:webpack-dev-server)2.1 配置package.json
{
// ...
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack",
"dev": "webpack-dev-server --open" // 新增配置,运行 npm run dev 会自动打开浏览器
}
// ...
}
{
// ...
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack",
"dev": "webpack-dev-server --open" // 新增配置,运行 npm run dev 会自动打开浏览器
}
// ...
}2.2 配置webpack.config.js
'use strict'
const path = require('path');
var webpack = require('webpack'); // 引进 webpack
module.exports = {
// ...
mode:'development', // production 改为开发环境,因为只有开发环境才用到热更新
module:{
// ...
},
plugins:[
new webpack.HotModuleReplacementPlugin()
],
devServer:{
contentBase:'./dist',
hot: true
}
}
'use strict'
const path = require('path');
var webpack = require('webpack'); // 引进 webpack
module.exports = {
// ...
mode:'development', // production 改为开发环境,因为只有开发环境才用到热更新
module:{
// ...
},
plugins:[
new webpack.HotModuleReplacementPlugin()
],
devServer:{
contentBase:'./dist',
hot: true
}
}2.3 到控制台运行 npm run dev,即可运行!
webpack 开启监听模式,有两种方式:
1.启动 webpack 命令时,带上 --watch 参数。
唯一缺点:需要手动刷新才能看到变化;
2.在配置 webpack.config.js 中设置 watch: true。
优点:
(1) WDS 不刷新浏览器
(2) WDS 不输出文件,⽽是放在内存中
(3) 使⽤用 HotModuleReplacementPlugin 插件1 第一种方式, --watch1 第一种方式, --watch1 第一种方式, --watch1.1 配置package.json
{
// ...
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack",
"watch": "webpack --watch" // 新增配置
}
// ...
}
{
// ...
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack",
"watch": "webpack --watch" // 新增配置
}
// ...
}1.2 到控制台输入 npm run watch npm run watch1.3 修改文件,保存后,会自动打包,到浏览器刷新,才能看到变化。1.4 文件监听的原理理分析轮询判断文件的最后编辑时间是否变化
某个⽂件发⽣生了了变化,并不会⽴刻告诉监听者,⽽是先缓存起来,等 aggregateTimeout
module.export = {
//默认 false,也就是不不开启
watch: true,
//只有开启监听模式时,watchOptions才有意义
wathcOptions: {
//默认为空,不监听的文件或者文件夹,支持正则匹配
ignored: /node_modules/,
//监听到变化发生后会等300ms再去执行,默认300ms
aggregateTimeout: 300,
//判断文件是否发生变化是通过不停询问系统指定文件有没有变化实现的,默认每秒问1000次
poll: 1000
}
}
module.export = {
//默认 false,也就是不不开启
watch: true,
//只有开启监听模式时,watchOptions才有意义
wathcOptions: {
//默认为空,不监听的文件或者文件夹,支持正则匹配
ignored: /node_modules/,
//监听到变化发生后会等300ms再去执行,默认300ms
aggregateTimeout: 300,
//判断文件是否发生变化是通过不停询问系统指定文件有没有变化实现的,默认每秒问1000次
poll: 1000
}
}
2 第二种方式,在配置 webpack.config.js 中设置 watch: true(热更新:webpack-dev-server)2 第二种方式,在配置 webpack.config.js 中设置 watch: true(热更新:webpack-dev-server)2 第二种方式,在配置 webpack.config.js 中设置 watch: true(热更新:webpack-dev-server)2.1 配置package.json
{
// ...
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack",
"dev": "webpack-dev-server --open" // 新增配置,运行 npm run dev 会自动打开浏览器
}
// ...
}
{
// ...
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack",
"dev": "webpack-dev-server --open" // 新增配置,运行 npm run dev 会自动打开浏览器
}
// ...
}2.2 配置webpack.config.js
'use strict'
const path = require('path');
var webpack = require('webpack'); // 引进 webpack
module.exports = {
// ...
mode:'development', // production 改为开发环境,因为只有开发环境才用到热更新
module:{
// ...
},
plugins:[
new webpack.HotModuleReplacementPlugin()
],
devServer:{
contentBase:'./dist',
hot: true
}
}
'use strict'
const path = require('path');
var webpack = require('webpack'); // 引进 webpack
module.exports = {
// ...
mode:'development', // production 改为开发环境,因为只有开发环境才用到热更新
module:{
// ...
},
plugins:[
new webpack.HotModuleReplacementPlugin()
],
devServer:{
contentBase:'./dist',
hot: true
}
}2.3 到控制台运行 npm run dev,即可运行!
相关文章:
- jsvue 验证两次输入的密码是否一致的方法示例js大全
- js微信小程序对图片进行canvas压缩的方法示例详解js大全
- jsPHP 502bad gateway原因及解决方案js大全
- js详解Java中String JSONObject JSONArray List<实体类>转换js大全
- jsvue 获取url里参数的两种方法小结js大全
- jsVant Weapp组件踩坑:picker的初始赋值解决js大全
- JavaScriptjs前端传json后台接收‘‘被转为quot的问题解决
- jsvue 获取url参数、get参数返回数组的操作js大全
- JavaScriptjs禁止查看源文件屏蔽Ctrl+u/s、F12、右键等兼容IE火狐chrome
- jsJSONObject与JSONArray使用方法解析js大全