webpack之webpack-dev-server 与 webpack-hot-server
最近在弄框架,用到了webpack打包,当然不可避免的遇到了开发实际问题。在实际开发中,我们不可能改一个文件,就去构建一次,于是想到了实时更新。查看webpack,看到了webpack-dev-server。
webpack-dev-server
webpack已经想到了开发流程中的自动刷新,这就是webpack-dev-server。它是一个静态资源服务器,类似express服务器,只用于开发环境。一般来说,对于纯前端的项目(全部由静态html文件组成),简单地在项目根目录运行webpack-dev-server,然后打开浏览器 默认端口是8080,即http://localhost:8080就可以看到我们的页面了,修改任意关联的源文件并保存,webpack编译就会运行,并在运行完成后通知浏览器自动刷新。
其原理呢,就是根据所写的webpack.config.js文件,当改变entry中所涉及到的文件时,此时就会监听到并自动刷新浏览器。注意,这里生成的文件都是保存在内存中的,不会写入文件目录。因此我们改动文件,就不用再次构建,立即能看到效果,是不是很爽啊。哈哈,但是不要高兴。它也是有缺点的。
缺点:如果在请求某个静态资源的时候,webpack编译还没有运行完毕,webpack-dev-server不会让这个请求失败,而是会一直阻塞它,直到webpack编译完毕。这个对应的效果是,如果你在不恰当的时候刷新了页面,不会看到错误,而是会在等待一段时间后重新看到正常的页面,就好像“网速很慢”。
为了解决这个问题,webpack-hot-server应运而生。
webpack-hot-server
webpack-hot-middleware是一个结合webpack-dev-middleware使用的middleware,它可以实现浏览器的无刷新更新(hot reload)。这也是webpack文档里常说的HMR(Hot Module Replacement)。
建议看下具体实例:https://github.com/glenjamin/webpack-hot-middleware/tree/master/example。下载下来后,在example文件下,执行npm install,然后在浏览器中访问,http://localhost:1616/,然后改动client.js, 观察浏览器。你会发现浏览器更新了,但是没有刷新操作。
webpack.config.js文件:
var webpack = require('webpack');
module.exports = {
context: __dirname,
entry: [
// Add the client which connects to our middleware
// You can use full urls like 'webpack-hot-middleware/client?path=http://localhost:3000/__webpack_hmr'
// useful if you run your app from another point like django
'webpack-hot-middleware/client?path=/__webpack_hmr&timeout=20000',
// And then the actual application
'./client2.js'
],
output: {
path: __dirname,
publicPath: '/',
filename: 'bundle.js'
},
devtool: '#source-map',
plugins: [
new webpack.optimize.OccurenceOrderPlugin(),
new webpack.HotModuleReplacementPlugin(),
new webpack.NoErrorsPlugin()
],
};
其中,webpack-hot-middleware/client?path=/__webpack_hmr&timeout=20000,开头:webpack-hot-middleware/client,这个你直接粘贴就好,我测试下来这个client和上下文无关。而? 后面的 path=/__webpack_hmr&timeout=20000 ,其中path有HMR服务监听,timeout应该是知道失联的话,达到20000毫秒就算超时,不必再做尝试。
另外再就是server.js文件,文件中已经加了注释,这里就不再赘述。
有不同意见的话,可以提给我,大家共同探讨。
webpack之webpack-dev-server 与 webpack-hot-server的更多相关文章
- Vue.js 2.x Development Build With Hot Reloading For External Server (using Webpack template)
This article assuming you created your project using webpack template. vue init webpack <PROJECT_ ...
- 【Webpack的使用指南 02】Webpack的常用解决方案
说是解决方案实际上更像是webpack的插件索引. 写这一篇的目的是为了形成一个所以,将来要用时直接来查找即可. 索引目录 1.自动构建HTML,可压缩空格,可给引用的js加版本号或随机数:html- ...
- webpack从零开始第1课:安装webpack和webpack-dev-server
原文地址:https://segmentfault.com/a/1190000012536871 webpack目录 第1课: 安装webpack和webpack-dev-server 第2课: 配置 ...
- webpack 快速入门 系列 —— 初步认识 webpack
初步认识 webpack webpack 是一种构建工具 webpack 是构建工具中的一种. 所谓构建,就是将资源转成浏览器可以识别的.比如我们用 less.es6 写代码,浏览器不能识别 less ...
- [Webpack 2] Intro to the Production Webpack Course
There are several lessons that will build on top of this project. It is a fairly standard, small web ...
- [js高手之路]深入浅出webpack教程系列3-配置文件webpack.config.js详解(下)
本文继续接着上文,继续写下webpack.config.js的其他配置用法. 一.把两个文件打包成一个,entry怎么配置? 在上文中的webpack.dev.config.js中,用数组配置entr ...
- webpack学习笔记一:安装webpack、webpack-dev-server、内存加载js和html文件、loader处理非js文件
一 .webpack学习环境准备: 1:window系统 2:安装node.js 官方网址 下载好后下一步下一步安装即可 安装步骤略过....... 3:nrm的安装 打开cmd命令控制台 输入:n ...
- webpack dllPlugin使用(基于vue-cli webpack模板)
由于本例单入口时打包的文件体积过大,将其分成多入口. 主要涉及到的几个文件为: /index.html, /webpack.dll.config.js, /build/webpack.base.con ...
- [js高手之路]深入浅出webpack教程系列2-配置文件webpack.config.js详解(上)
[js高手之路]深入浅出webpack教程系列索引目录: [js高手之路]深入浅出webpack教程系列1-安装与基本打包用法和命令参数 [js高手之路]深入浅出webpack教程系列2-配置文件we ...
- webpack快速入门——实战技巧:webpack模块化配置
首先在根目录,新建一个webpack_config文件夹,然后新建entry_webpack.js文件,代码如下: const entry ={}; //声明entry变量 entry.path={ ...
随机推荐
- ubuntu下的root的创建进入与退出
创建: 在终端中输入:sudo passwd rootEnter new UNIX password: (在这输入你的密码)Retype new UNIX password: (确定你输入的密码)pa ...
- list集合去重复元素
//set集合去重,不打乱顺序 public static void main(String[] args){ List<String> list = new ArrayList<S ...
- GitHub上README.md教程(copy)
[说明:转载于http://blog.csdn.net/kaitiren/article/details/38513715] 最近对它的README.md文件颇为感兴趣.便写下这贴,帮助更多的还不会编 ...
- [SDOI2013]泉
题目描述 作为光荣的济南泉历史研究小组中的一员,铭铭收集了历史上x个不同年份时不同泉区的水流指数,这个指数是一个小于. 2^30的非负整数.第i个年份时六个泉区的泉水流量指数分别为 A(i,l),A( ...
- ACM_Uppercase(水题)
Uppercase Time Limit: 2000/1000ms (Java/Others) Problem Description: 给出一句中间无特殊符号的英语句子,要求将各单词的首字母改大写. ...
- Windows8.1进入IIS管理器的方法
以前在本机的Windows8.1操作系统中安装了IIS,很久没有使用过,今天在安装IBM Http Server的时候启动失败,才想起来IIS占用了80端口,需要把IIS服务停止掉.找了半天才找到进入 ...
- A8ERP配送管理系统
- Java编程思想读书笔记_第三章
本章提到的关于==的部分,一个完整的实验如下: class Test { public static void main(String[] args) { Integer i = new Intege ...
- poj1778 All Discs Considered
思路: 拓扑排序.贪心. 实现: #include <bits/stdc++.h> using namespace std; vector<]; int n1, n2; inline ...
- React 篇 Comment Model
Model 原型 Comment Box <div className="commentBox"> <h1>Comments</h1> < ...