webpack实现“热更新”和“热加载”(webpack3.6新增)
之前的博文有提到怎么样去实现热更新,但是居然要用到另外一个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新增)的更多相关文章
- React配合Webpack实现代码分割与异步加载
这是Webpack+React系列配置过程记录的第四篇.其他内容请参考: 第一篇:使用webpack.babel.react.antdesign配置单页面应用开发环境 第二篇:使用react-rout ...
- 【Quick 3.3】资源脚本加密及热更新(三)热更新模块
[Quick 3.3]资源脚本加密及热更新(三)热更新模块 注:本文基于Quick-cocos2dx-3.3版本编写 一.介绍 lua相对于c++开发的优点之一是代码可以在运行的时候才加载,基于此我们 ...
- Webpack 常见静态资源处理 - 模块加载器(Loaders)+ExtractTextPlugin插件
Webpack 常见静态资源处理 - 模块加载器(Loaders)+ExtractTextPlugin插件 webpack系列目录 webpack 系列 一:模块系统的演进 webpack 系列 二: ...
- webpack+express实现“热更新”和“热加载”(webpack3.6以前的做法)
“热更新”:对应的是 'webpack-dev-middleware' 中间件 “热加载”:对应的是 'webpack-hot-middleware' 中间件 为了使用这两个中间件,必须修改“webp ...
- Android热修复(动态加载)方案汇总
整理了以下动态加载的方案,便于在项目中使用时查阅: Dexposed github (https://github.com/alibaba/dexposed) AndFix github (https ...
- Webpack 2 视频教程 011 - Webpack2 中加载 CSS 的相关配置与实战
原文发表于我的技术博客 这是我免费发布的高质量超清「Webpack 2 视频教程」. Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲 ...
- webpack散记---代码分割 和 懒加载
webpack methods ES 2015 Loader spec (1)webpack methods方法 require.ensure //可以动态加载依赖 []:dependencies / ...
- 热更新应用--热补丁Hotfix学习笔记
一.热补丁简介 热补丁主要是用于将纯C#工程在不重做的情况下通过打补丁的形式改造成具备lua热更新功能工程,主要是让原来脚本中Start函数和Update函数等函数代码块重定向到lua代码. 二.第一 ...
- Angular (SPA) WebPack模块化打包、按需加载解决方案完整实现
文艺小说-?2F,言情小说-?3F,武侠小说-?9F long long ago time-1-1:A 使用工具,long long A ago time-1-2:A 使用分类工具,long long ...
随机推荐
- TMS320VC5509的MCBSP配置成SPI模式通信
1. 首先是把MCBSP的配置 其次是时钟停止模式的配置,关闭大同小异 SPI有4中模式,怎么根据上面的寄存器选择哪种模式?下面展示了其中两种,CLKXP=1的时候有另外两种,暂时不整出来了 2. 代 ...
- Centos7下python3安装pip-9.0.1
pip类似RedHat里面的yum,安装Python包非常方便.本节详细介绍pip的安装.以及使用方法 1.下载pip安装包 [root@localhost ~]# wget https://pypi ...
- JavaScript快速入门-实战(例子)
1.模拟bootstrap中的模态框 效果图:(点我后,弹出对话框,最下面的内容可以看到,但是有一定的透明度.) 思路分析: 整体分为三层,最底层(点我),中间透明层(实现透明效果),最顶层(最新内容 ...
- 总结com组件问题,随笔记录
一.从 IClassFactory 为 CLSID 为 {00024500-0000-0000-C000-000000000046} 的 COM 组件创建实例失败,原因是出现以下错误:80010001 ...
- 2019大疆PC软件开发笔试——开关和灯泡两个电路板
题目描述: 小A是一名DIY爱好者,经常制作一些有趣的东西. 今天,小A突然想要来做这样一个东西.小A现在有两块同样大小为n×m,有n×m块大小为1×1小电路板拼成的矩形电路板,假设叫做电路板A和电路 ...
- [转]An overview of Openvswitch implementation
This is NOT a tutorial on how to use openvswitch, this is for developers who want to know the implem ...
- MiniNet自定义拓扑
SDN 与 Mininet 概述 SDN 全名为(Software Defined Network)即软件定义网络,是现互联网中一种新型的网络创新架构,其核心技术 OpenFlow 通过网络设备控制面 ...
- 《Linux内核--分析Linux内核创建一个新进程的过程 》 20135311傅冬菁
20135311傅冬菁 分析Linux内核创建一个新进程的过程 一.学习内容 进程控制块——PCB task_struct数据结构 PCB task_struct中包含: 进程状态.进程打开的文件. ...
- 读书笔记(chapter1-2)
一.linux内核简介 1.1unix的历史 1.unix强大的根本原因:1.unix很简洁,仅仅提供几百个系统调用并且有一个非常明确的设计目的:2.在unix中,所有的东西都被当作文件对待:3.un ...
- 第一Sprint阶段对各组提出的意见
组号 组名 意见 1 理财猫 1.界面深色的部分,字体应调成亮色,可以适当美化字体. 2.希望能够自动记录花销,而不是只能手动“记一笔”. 3.功能略少,比如可以添加“收入详情”.“支出详情”. 2 ...