8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

一、HMR介绍

在我们开发react应用的时候,在配置了webpack-dev-server的前提下每一次的组件内容修改都需要手动的刷新浏览器,为了解决这个问题,所以有了热更新这个概念,网上的文章弄得我一头雾水,在我配置成功后,自己来记录一下热更新的配置

时隔三个月今天发现了配置更简单的热替换的方法,点我查看

二、配置

1.从零开始–项目初始化

首先创建一个基本的react的项目,然后命令行运行 npm init 生成 package.json 文件。

新建 build,client 文件夹,分别用来存放 webpack 配置(webpack.config.js文件)和 react 组件。

当前目录结构:

目录结构

2.基本的webpack配置

为了自动产出html文件,安装 html-webpack-plugin

为了解析 react 组件和对es6的解析,安装 babel-loader babel-core babel-preset-es2015 babel-preset-es2015-loose babel-preset-react 模块,并在根目录新建文件 .babelrc 文件 babel 的配置文件

.babelrc

此时 package.json 文件的包

package.json

添加 webpack-devserver 配置,此时 webpack-config.js 配置如下1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41const path=require('path');

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

module.exports={

entry: {

app:path.join(__dirname,'../client/app.js')

},

output:{

filename:'[name].[hash].js',

path:path.join(__dirname,'../dist'),

publicPath:'/public/'

},

module:{

rules:[

{

test:/.(jsx|js)$/,

loader:'babel-loader',

exclude:path.join(__dirname,'../node_modules')

}

]

},

plugins:[

new HtmlWebpackPlugin()

],

devServer:{

host:'0.0.0.0',

port:'8888',

contentBase:path.join(__dirname,'../dist'),

/*显示错误信息*/

overlay:{

errors:true

},

/*因为上面的publicPath:'/public/',所以访问的所有路径都要加上public*/

publicPath:'/public/',

historyApiFallback:{

/*如果页面404则返回下面配置的页面*/

index:'/public/index.html'

}

}

}

此时启动webpack-dev-server后,运行成功

package.json

友情提示::如果在执行命令的过程中报错 ‘cannot find …’ 这类的错误,首先检查是否少装了包,如果没有少装,则删除 node_module文件夹,重新安装下。

如果运行 webpack-dev-server 启动服务器的时候,网页的 js 文件显示404,首先检查是否本地已经有了一个编译好的 dist 文件夹,因为webpack-dev-server会优先读取本地文件,配置的时候我们添加了 /pubilc/ 所以是读取不道德,这时,删除本地 dist文件夹即可。(这个相当相当的坑)

在入口文件中,我这样写 document.body 是不可取的,正确的做法是 获取Id的形式。

知识点!( 敲黑板 ):path.join 和 path.resolve 区别path.join:拼接地址(会正确使用当前系统的路径分隔符,Unix系统是/,Windows系统是)

比如:path.join(‘m’,’/b’) 或者 path.join(‘m’,’b’) 返回m/b这个路径

path.resolve:将参数转换为绝对路径

比如 path.resolve(‘m’) ;如果当前命令窗口是在c盘打开的,那么返回C:m(总是返回一个绝对路径)

对比:两种方法都可以获得当前目录的绝对路径(通过__dirname),因为path.join可以适应unix和windows,所以join可能好一些

三、重头戏-配置HMR

这里说是简单,但我觉得对于初次使用还是比较繁琐,整理一下,分为下面几个步骤(与顺序无关)安装 react-hot-loader

配置 babelrc 文件

配置 入口文件app.js

配置 webpack.config.js

2.配置 .babelrc 文件

.babelrc

3. 配置 入口文件app.js

4. 配置 webpack.config.js

改动部分标记为 //add1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48const path=require('path');

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

const webpack=require('webpack');//add

module.exports={

entry: {

app:[

'react-hot-loader/patch',//add

path.join(__dirname,'../client/app.js')

]

},

output:{

filename:'[name].[hash].js',

path:path.join(__dirname,'../dist'),

publicPath:'/public/'

},

module:{

rules:[

{

test:/.(jsx|js)$/,

loader:'babel-loader',

exclude:path.join(__dirname,'../node_modules')

}

]

},

plugins:[

new HtmlWebpackPlugin(),

new webpack.HotModuleReplacementPlugin() //add

],

devServer:{

host:'0.0.0.0',

port:'8888',

contentBase:path.join(__dirname,'../dist'),

/*热加载*///add

hot:true,//add

/*显示错误信息*/

overlay:{

errors:true

},

/*因为上面的publicPath:'/public/',所以访问的所有路径都要加上public*/

publicPath:'/public/',

historyApiFallback:{

/*如果页面404则返回下面配置的页面*/

index:'/public/index.html'

}

}

}

好了,该做的做完了,打开浏览器测试,发现更改App.jsx文件后浏览器竟然特么没有变化,这就很气人,我也按照你官网上写的做了,现在出不来?好吧,看下面的解决办法

四、解决上面的问题

app.js这个入口文件中,更改为:

更改为

如果有了更改,那么 重新用 require 的方式获取一下这个组件,然后进行渲染

成功啦!

是不是有了疑问,为啥用 require 的方式引入呢?因为这种形式的文件引入import的方式引入不了

五、总结

本来一个挺好的功能,分别写在了 webpack官网和 react-hot-loader 官网,这还不算啥,最后还运行不了,多坑,好了就记录到这里了,如果有问题或者补充欢迎回复

修改html时webpack热更新,webpack热更新(HMR)相关推荐

  1. 【Python】PyCharm热加载,调试时,修改运行时代码无需重新启动程序即可更新所做的修改

    背景描述 简言之: 程序出现错误,修改错误代码后必须要重新执行整个程序 详细说明: 在调试python程序时经常会出现这样的情况,代码执行到某一处时出现错误,或者与预期的的结果不一致,这时候发现是某一 ...

  2. 修改html时webpack热更新,利用webpack实现对html文件的热更新

    webpack中webpack-dev-server是一个简单的web服务器,能够帮助咱们实现代码的热更新,即在实际开发中只需保存修改完后的代码,不用手动刷新页面就能够看到效果.在使用webpack- ...

  3. less webpack 热更新_webpack---less+热更新 使用

    最近尝试用less写界面,webpack进行打包,然后发现每次修改less时都需要重新执行webpack打包一下,于是就想到了webpack热更新这个功能. 一.使用less less是一门css预处 ...

  4. webpack 4 热更新后台成功更新浏览器不刷新

    上一篇文章写的是 webpack4 打包,但是每次修改代码都要重新执行一次打包命令,实在是麻烦,本文将推出我的实现,仅做参考!!! 1.安装 webpack-dev-server npm instal ...

  5. idea修改代码后没有重新编译_SpringBoot中实现代码修改之后的自动更新与热加载...

    在实际的开发过程中,我们经常修改代码之后,手动的重启项目,查看修改效果.那么有没有一种方式能够快速的.自动的帮我们将修改代码自动更新,避免手动重启,从而提高开发效率呢?是有的,对于这个功能很多人对功能 ...

  6. 热更新_热更新必懂3件事

    今天我们来一起来说说热更新,谈起热更新,大家都觉得很难,都去找官方的热更新的解决方案,然后对着一步一步搞,原理还是不懂, 今天小编就带你来完整的讲解一下热更新的原理,搞懂原理,做热更新可以自己做,也可 ...

  7. unity python热更新_Unity热更新介绍和测试方法

    最近项目中增加了热更新了功能,程序也完成了相应的开发,接下来就需要对这个模块进行相应的测试工作了,在测试开始之前,了解下其原理总是很有好处的. 1:什么是热更新 简单的理解就是:用户重启客户端就能实现 ...

  8. iOS 可用的热更新、热修复方案

    前言 JSPatch虽然在两年前被苹果邮件警告,但是ReactNative依然盛行,只不过ReactNative并没有对Native进行热修复的功能,只是动态下发新的bundle模块.动态加载而已. ...

  9. 浅析“热更新”(热修复)解决方案

    新闻事件背景:11月27日,苹果应用商店集中下架了拼多多.搜狗.科大讯飞.悦跑圈等多家公司的应用产品.科大讯飞和悦跑圈均表示,下架与"热更新"相关.然而,这并不是苹果应用商店第一次 ...

  10. UE4 版本迭代、资源热更、pak更新方案

    本文链接:https://blog.csdn.net/BDalasja/article/details/95622429 UE4 版本迭代.资源热更.pak更新方案 注意:以下讨论的内容是客户端热更, ...

最新文章

  1. ubuntu20.04 中ifconfig无ens33
  2. R语言dplyr包mutate_at函数通过名称修改指定数据列的内容(使用统一的函数)实战
  3. pythonhistogram教程_OpenCV-Python 直方图-4:直方图反投影 | 二十九
  4. 今天去医院拿宝宝的微量元素检查结果
  5. step by step to download equipment via request download
  6. 数据驱动的软件开发者智能协作技术
  7. 典型医学设计实验GEO数据分析 (step-by-step) - 数据获取到标准化
  8. 精通版本之Subversion
  9. 【5分钟Paper】Fast强化学习和Slow强化学习
  10. open modelica RLC仿真
  11. TensorFlow学习【1】--TensorFlow下载安装
  12. Chrome浏览器多账户登录
  13. Faster rcnn 配置时出现bTest Key Error
  14. Linux之ARM(IMX6U)裸机主频和时钟配置
  15. PostgreSQL 技术内幕(二) Greenplum-AO表
  16. nginx源码的安装与磁盘分区
  17. 【java.lang.ref】当WeakReference的referent重写了finalize方法时会发生什么
  18. 汉化python语言编程界面_python设置中文界面实例方法
  19. 以太网 VLAN简介、MAC地址表与VLAN的关联内容
  20. QCustomPlot 线样式,点样式

热门文章

  1. Color Grading
  2. 前端开发的五种设计模式
  3. Intel Scalable IOV介绍及应用实例
  4. STM32-通行闸机2(HAL库)
  5. 全面解析滑环的结构以及工作原理
  6. Android VR Player(全景视频播放器) [7]:视频列表的实现-网络视频
  7. 滤波算法 | 算术平均滤波法
  8. js判断是否是Json对象
  9. 互联网药库试水:北京今年展开互联网虚拟药库
  10. 基于人工蜂鸟算法的函数寻优及工程优化应用