webpack 使用教程--实时刷新测试
学习webpack,基本始终是围绕:
1.如何安装webpack
2.如何使用webpack
3.如何使用loader
4.如何使用开发服务器
可能我们会在如何使用开发服务器的时候,遇到诸如调试的相关问题:
使用开发服务器
我们webpack中使用的开发调试服务器通常是 webpack-dev-server,通过这个服务我们更多的是想实现无刷新的处理编译入口文件。
通过以下命令全局安装
|
1
|
npm install webpack-dev-server -g |
启动服务器
|
1
|
webpack-dev-server --progress --colors |
这会绑定一个小型express服务器到localhost:8080,来为你的静态资源及bundle(自动编译)服务。通过访问http://localhost:8080/webpack-dev-server/bundle,bundle每次重编译后浏览器页面都会自动更新。
但这里可能会遇到,我们改动js文件,无法实时更新的问题,很大一部分原因是没有理解编译后的bundle是虚拟的问题,本地其实质是没有编译的,所以我们不能用本地的路径去处理,需要进行更改为http://localhost:8080/bundle.js.
我们可能预想实现无刷新是这样的:
- js 文件修改
- webpack-dev-server 监控到变化
- webpack 重新编译
- 实时更新浏览器中的页面
但可惜的是,http://localhost:8080/index.html 对 js 文件的变化无动于衷,改完之后,手动刷新才能生效。
webpack-dev-server 提供了两种模式用于自动刷新页面:
iframe 模式
我们不访问
http://localhost:8080,而是访问http://localhost:8080/webpack-dev-server/index.htmlinline 模式
在命令行中指定该模式,
webpack-dev-server --inline。这样http://localhost:8080/index.html页面就会在 js 文件变化后自动刷新了。
由于如此我的package.json文件可能就是这样,方便我去快速启动
|
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
|
{ "name": "react-sample", "version": "1.0.0", "description": "webpack demo", "main": "./src/entry.js", "scripts": { "start": "webpack-dev-server --inline --hot", "build": "webpack --display-error-details", "watch": "webpack --progress --colors --watch" }, "repository": { "type": "git", "url": "https://github.com/dwqs/react_practice.git" }, "keywords": [ "react", "webpack" ], "author": "pomy", "devDependencies": { "babel-core": "^5.8.25", "babel-loader": "^5.3.2", "react": "^0.14.5", "react-dom": "^0.14.5", "react-hot-loader": "^1.3.0", "webpack": "^1.12.2", "webpack-dev-server": "^1.14.0" }} |
解释一下官方推荐的无刷新:
示例代码:
package.json
"scripts": {
"dev": "webpack-dev-server --devtool eval --progress --colors --hot --content-base build",
/*build导致找不到页面 cannot file*/
"hot": "webpack-dev-server --devtool eval --progress --colors --hot --content-base",
}
webpack.config.js

module.exports = {
entry: [
'webpack/hot/dev-server',
'webpack-dev-server/client?http://localhost:8080',
path.resolve(__dirname, './src/entry.js')
]
};

官方的无刷新,其实是在前面讲到的iframe实现的实时刷新,如果我们,至进行http://localhost:8080/index.html是不会进行实时刷新的。还有一点,就是官方后面加的build,作用时让其监测,打包出bundle.js,但亲测会导致,到cannot page file, 所以建议,调试完毕之后,手动打包。
最近给大家一个建议,多看官方的示例文档,这才是快速入门的最佳渠道,webpack官方文档。
注意:通常我们设置好webpack-dev-server服务自动刷新预览功能之后,发现手机预览不了,其实是由于webpack-pack-server服务安全机制导致的,只允许本机访问,我们可以把host设置为0.0.0.0就可以允许或者设置为本机地址。
解决参考资料:stackoverflow问答 stackoverflow问答2 github isuues
参考资料:
Webpack-dev-server结合后端服务器的热替换配置
webpack 使用教程--实时刷新测试的更多相关文章
- webpack使用教程
webpack使用教程 接触webpack也有挺长一段时间了,公司的项目也是一直用着webpack在打包处理,但前几天在教新人的情况下,遇到了一个问题,那就是:尽管网上的webpack教程满天飞,但是 ...
- Webpack 4教程 - 第七部分 减少打包体积与Tree Shaking
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者.原文出处:https://wanago.io/2018/08/13/webpack-4-course-part ...
- 全网最贴心webpack系列教程和配套代码
webpack-demos:全网最贴心 webpack 系列教程和配套代码 欢迎关注个人技术博客:godbmw.com.每周 1 篇原创技术分享!开源教程(webpack.设计模式).面试刷题(偏前端 ...
- webpack 4 教程
webpack 4 教程:https://blog.zfanw.com/webpack-tutorial/
- Webpack 入门教程
Webpack 是一个前端资源加载/打包工具.它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源. 本章节基于 Webpack3.0 测试通过. 从图中我们可以看出,W ...
- [转]Webpack 入门教程
本文转自:http://www.runoob.com/w3cnote/webpack-tutorial.html Webpack 是一个前端资源加载/打包工具.它将根据模块的依赖关系进行静态分析,然后 ...
- webpack入门教程之初识loader(二)
上一节我们学习了webpack的安装和编译,这一节我们来一起学习webpack的加载器和配置文件. 要想让网页看起来绚丽多彩,那么css就是必不可少的一份子.如果想要在应用中增加一个css文件,那么w ...
- Webpack使用教程三(webpack-dev-server)
Webpack给本地开发提供了一个可选的服务器webpack-dev-server.webpack-dev-server是一个很小的express应用,使用前需要用npm安装,它根据webpack.c ...
- webpack入门级教程
Webpack是什么 首先可以看下官方文档,文档是最好的老师. 这里也有国外的一个朋友写的入门介绍. Webpack是由Tobias Koppers开发的一个开源前端模块构建工具.它的基本功能是将以模 ...
随机推荐
- PHP 正则表达式 修饰符
下面列出了当前可用的 PCRE 修饰符.括号中提到的名字是 PCRE 内部这些修饰符的名称. 模式修饰符中的空格,换行符会被忽略,其他字符会导致错误. i (PCRE_CASELESS) 如果设置了这 ...
- gulp工具rename
gulp 对文件批量重命名 gulp-rename重命名 var gulp = require('gulp'); var rename = require("gulp-rename" ...
- HTML5的File API读取文件信息
html结构: <div id="fileImage"></div> <input type="file" value=" ...
- 键盘按钮keyCode大全
字母和数字键的键码值(keyCode) 按键 键码 按键 键码 按键 键码 按键 键码 A 65 J 74 S 83 1 49 B 66 K 75 T 84 2 50 C 67 L 76 U 85 3 ...
- 常见端口 HTTP代码
端口号 系统保留了前0到1023端口作为常用的网络服务. 0-1023 公认端口 1024-49151 注册端口 49152-65535 动态或私有端口 1 TCPMUX 主要在SGI Irix机器 ...
- pureftp 服务
没啥图,不喜勿喷---_- ftp(file transfer protocol)--文件传输协议 (a)官网:www.pureftpd.org (b)原理 让用户连接上一个远程计算机(运行FTP ...
- HTML 保存图片到本地
具体方法有两种 一种是 利用canvas的 toDataUrl 和Html5 里面的 <a>标签里面的 Download 属性 虽然 Download 的兼容性不怎么样 但是在文章后 ...
- java线程 - 多线程 - 守护线程
1.多线程执行者/处理类 都是Runnable的实现类(如自定义类实现Runnable 或 java原生的Thread.FutureTask),但最后都必须封装成Thread线程类由Thread.st ...
- Linux创建定时任务
例如: 要求每天23:59分备份lampp日志: 备份的文件名以当时的时间命名 格式为:201612241852_acces.log 备份到:/tmp/logs/目录下 1.新建shell脚本:vim ...
- 行为型模式之Observer模式
观察者模式(又被称为发布-订阅模式.模型-视图模式.源-收听者模式或从属者模式) 观察者模式中,一个目标对象管理所有依赖于它的观察者对象,并且在它本身的状态改变时主动发出通知. 应用场景 拍卖会可以认 ...