之前的博文有提到怎么样去实现热更新,但是居然要用到另外一个node框架(express)而且新增了一个入口(entry)两个插件(plugin)来实现,大大提高了配置的复杂度,这样其实对使用webpack的开发者来说是非常不友好的。

之后我在技术胖的博客发现,原来早在webpack3.6的时候已经推出了webpack-dev-server,而且使用非常简单:

1.安装

npm i webpack-dev-server -D

2.配置webpack.config.js(可以跳过不配值)

//省略一堆配置...
devServer:{
host: 'localhost', //可选,ip
port: 3000, //可选,端口
contentBase:path.resolve(__dirname,'dist'), //可选,基本目录结构
compress: true //可选,压缩
}

3.在package.json的script添加

webpack-dev-server不能直接在cmd使用,要通过npm run才能使用,因为npm run才会找到当前目录的安装的包,直接是找不到的(这也是为什么我们之前需要全局安装gulp和webpack的原因,其实只是偷懒想在cmd直接跑webpack和gulp命令罢了)
"scripts":{
"server": "webpack-dev-server"
}

4.跑起来(如果没有配置,默认为localhost:8080)

npm run server

如果忽略掉可有可无的第二步,其实就是简简单单的安装和使用而已,甚至还不需要配置服务器,比起之前的做法实在简单太多了。


调试:需要有浏览器调试的话,在webpack.config.js加上

devtool:'eval-source-map'

就行了


关于hot-update.js

其实webpack有watch功能,当我们打包范围内的文件被修改的时候,webpack是能够检测到的,并马上进行重新打包,而为了快速完成打包,webpack会生成hot-update.js和hot-update.json文件来快速替换buddle.js的对应被修改的模块。

而我们之前都在使用webpack-dev-server,这个其实只能满足初期开发,到了后期开发我们是需要和后端合并在同一个服务器的(前端使用服务器返回静态文件的功能,后端使用服务器接口返回动态数据的功能),而其他一般服务器并没用像webpack-dev-server一样使用“memory-fileSystem(内存文件系统)”,所以我们只能实时更新打包到真实的文件上,所以在对接后端的环节上,我们只能用webpack:watch的功能,这样的热更新显然会比之前使用webpack-dev-server要慢上一些,但是webpack的watch使用hot-update.js这种替换更新的方式显然使得热更新也不会太慢。


当然想要在开发期间,前端用自己的服务器,不和后端共用一个服务器也是有办法的,就是使用代理proxy

1.express有一个“http-proxy-middleware”的中间件,可以让我们的express服务器充当代理

2.webpack-dev-server也可以配置代理:

devServer: {
//省略其他设置。。。
代理
proxy: {
'/api': {
target: 'http://localhost:8081',
pathRewrite: {'^/api': '/data'} //本来是反向代理去http://localhost:8081/api,rewrite之后就反向代理去http://localhost:8081/data
}
}
}

代理可以使得服务器既可以访问本地服务器的静态文件,又可以作为中转站替我们访问后端接口。

webpack实现“热更新”和“热加载”(webpack3.6新增)的更多相关文章

  1. React配合Webpack实现代码分割与异步加载

    这是Webpack+React系列配置过程记录的第四篇.其他内容请参考: 第一篇:使用webpack.babel.react.antdesign配置单页面应用开发环境 第二篇:使用react-rout ...

  2. 【Quick 3.3】资源脚本加密及热更新(三)热更新模块

    [Quick 3.3]资源脚本加密及热更新(三)热更新模块 注:本文基于Quick-cocos2dx-3.3版本编写 一.介绍 lua相对于c++开发的优点之一是代码可以在运行的时候才加载,基于此我们 ...

  3. Webpack 常见静态资源处理 - 模块加载器(Loaders)+ExtractTextPlugin插件

    Webpack 常见静态资源处理 - 模块加载器(Loaders)+ExtractTextPlugin插件 webpack系列目录 webpack 系列 一:模块系统的演进 webpack 系列 二: ...

  4. webpack+express实现“热更新”和“热加载”(webpack3.6以前的做法)

    “热更新”:对应的是 'webpack-dev-middleware' 中间件 “热加载”:对应的是 'webpack-hot-middleware' 中间件 为了使用这两个中间件,必须修改“webp ...

  5. Android热修复(动态加载)方案汇总

    整理了以下动态加载的方案,便于在项目中使用时查阅: Dexposed github (https://github.com/alibaba/dexposed) AndFix github (https ...

  6. Webpack 2 视频教程 011 - Webpack2 中加载 CSS 的相关配置与实战

    原文发表于我的技术博客 这是我免费发布的高质量超清「Webpack 2 视频教程」. Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲 ...

  7. webpack散记---代码分割 和 懒加载

    webpack methods ES 2015 Loader spec (1)webpack methods方法 require.ensure //可以动态加载依赖 []:dependencies / ...

  8. 热更新应用--热补丁Hotfix学习笔记

    一.热补丁简介 热补丁主要是用于将纯C#工程在不重做的情况下通过打补丁的形式改造成具备lua热更新功能工程,主要是让原来脚本中Start函数和Update函数等函数代码块重定向到lua代码. 二.第一 ...

  9. Angular (SPA) WebPack模块化打包、按需加载解决方案完整实现

    文艺小说-?2F,言情小说-?3F,武侠小说-?9F long long ago time-1-1:A 使用工具,long long A ago time-1-2:A 使用分类工具,long long ...

随机推荐

  1. noi.ac 257 B

    链接 题目 区间[l,r]是连续满足,[l,r]中的数字的权值区间是一段连续的.多次询问可以完包含一个区间的连续区间.区间长度尽量小,如果有多个输出左端点靠左的. 分析: [l,r]区间是连续的,当且 ...

  2. 当系统扩展遇到违背OO的里氏原则(LSP)的时候怎么办 ?

    先转一篇写得很好的文章:http://www.cnblogs.com/CodeGuy/archive/2012/03/26/2418803.html ========================= ...

  3. Bluedroid协议栈BTU线程处理HCI数据流程分析

    在蓝牙enable的过程中会进行多个线程的创建以及将线程与队列进行绑定的工作.该篇文章主要分析一下处理hci数据这个 线程. void BTU_StartUp(void) { ... btu_bta_ ...

  4. 12、利用docker快速搭建Wordpress网站

    一.准备工作 结构图: 用户访问页面,Nginx将请求进行转发,如果请求的是php页面,则通过FastCGI转发给后端php进行处理:如果非php页面,则直接返回静态页面. 关键点: mysql.ph ...

  5. 关于GitHub上传没有记录(小绿块不显示的问题)

    最近开始使用上github来上传保存自己在学习中所写过的代码,打算将自己每天的成果能有个保存,然后就利用上GitHub这么一个利器. 听说GitHub的那个绿块是用来记录每天的上传记录的,结果我将代码 ...

  6. 使用顽灯浏览器执行H5游戏辅助挂机

    前一篇<使用Fidder从安卓模拟器获取APP内H5游戏网址>我们获取到了APP内H5游戏的网址,那么接下来我们使用辅助工具做一些日常任务,如:每天晚上20点做副本,定时喊话,自动清理包裹 ...

  7. petapoco 对存储过程的扩展 干货

    好久没发表文章了.心血来潮,简单的介绍下这次工作中的问题. 项目中运用了Petapoco,可是petapoco对存储过程的支持不够好.或者说对于某些特殊场景,petapoco的sql支持度有限. 比如 ...

  8. 《linux内核设计与实现》第一章

    第一章Linux内核简介 一.unix 1.Unix的历史 Unix是现存操作系统中最强大和最优秀的系统. ——1969年由Ken Thompson和Dernis Ritchie的灵感点亮的产物. — ...

  9. 20135202闫佳歆--week2 操作系统是如何工作的--学习笔记

    此为个人学习笔记存档 week 2 操作系统是怎么工作的 一.计算机是如何工作的?--三个法宝 (一)三个法宝 1.存储程序计算机 所有计算机的基础性的逻辑框架. 2.函数调用堆栈 在低级语言中并不很 ...

  10. 2013337朱荟潼 Linux第五章读书笔记——系统调用

    摘要: [20135337朱荟潼]原创作品转载请注明出处 第五章 系统调用 5.1 与内核通信 中间层 作用三个:1.为用户空间提供一种硬件的抽象接口:2.保证系统稳定和安全:3.除异常和陷入,是内核 ...