学习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.

  我们可能预想实现无刷新是这样的:

  1. js 文件修改
  2. webpack-dev-server 监控到变化
  3. webpack 重新编译
  4. 实时更新浏览器中的页面

  但可惜的是,http://localhost:8080/index.html 对 js 文件的变化无动于衷,改完之后,手动刷新才能生效。

  webpack-dev-server 提供了两种模式用于自动刷新页面:

  1. iframe 模式

    我们不访问 http://localhost:8080,而是访问http://localhost:8080/webpack-dev-server/index.html

  2. inline 模式

    在命令行中指定该模式,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 使用教程

  Webpack-dev-server结合后端服务器的热替换配置

  webpack入门(译)

  webpack插件实现实时刷新

  WebPack 常用功能介绍

  在express服务中搭建webpack-dev-server

  基于webpack搭建前端工程解决方案探索

  自己在项目中实现的热更新

简简单单,pfan!出来混的,一切都是要还的。

webpack 使用教程--实时刷新测试的更多相关文章

  1. webpack使用教程

    webpack使用教程 接触webpack也有挺长一段时间了,公司的项目也是一直用着webpack在打包处理,但前几天在教新人的情况下,遇到了一个问题,那就是:尽管网上的webpack教程满天飞,但是 ...

  2. Webpack 4教程 - 第七部分 减少打包体积与Tree Shaking

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者.原文出处:https://wanago.io/2018/08/13/webpack-4-course-part ...

  3. 全网最贴心webpack系列教程和配套代码

    webpack-demos:全网最贴心 webpack 系列教程和配套代码 欢迎关注个人技术博客:godbmw.com.每周 1 篇原创技术分享!开源教程(webpack.设计模式).面试刷题(偏前端 ...

  4. webpack 4 教程

    webpack 4 教程:https://blog.zfanw.com/webpack-tutorial/

  5. Webpack 入门教程

    Webpack 是一个前端资源加载/打包工具.它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源. 本章节基于 Webpack3.0 测试通过. 从图中我们可以看出,W ...

  6. [转]Webpack 入门教程

    本文转自:http://www.runoob.com/w3cnote/webpack-tutorial.html Webpack 是一个前端资源加载/打包工具.它将根据模块的依赖关系进行静态分析,然后 ...

  7. webpack入门教程之初识loader(二)

    上一节我们学习了webpack的安装和编译,这一节我们来一起学习webpack的加载器和配置文件. 要想让网页看起来绚丽多彩,那么css就是必不可少的一份子.如果想要在应用中增加一个css文件,那么w ...

  8. Webpack使用教程三(webpack-dev-server)

    Webpack给本地开发提供了一个可选的服务器webpack-dev-server.webpack-dev-server是一个很小的express应用,使用前需要用npm安装,它根据webpack.c ...

  9. webpack入门级教程

    Webpack是什么 首先可以看下官方文档,文档是最好的老师. 这里也有国外的一个朋友写的入门介绍. Webpack是由Tobias Koppers开发的一个开源前端模块构建工具.它的基本功能是将以模 ...

随机推荐

  1. Spark 官方文档(5)——Spark SQL,DataFrames和Datasets 指南

    Spark版本:1.6.2 概览 Spark SQL用于处理结构化数据,与Spark RDD API不同,它提供更多关于数据结构信息和计算任务运行信息的接口,Spark SQL内部使用这些额外的信息完 ...

  2. 关于SQL语句查询区分大小写

    在需要区分大小的字段后添加:collate Chinese_PRC_CS|CI_AS|AI  CI表示:不区分大小写 CS表示:区分大小写 AI表示: 指定不区分重音 AS表示:指定区分重音. 例:查 ...

  3. paintEvent(QPaintEvent*)是系统自动调用的

    qt中函数paintEvent(QPaintEvent*)是被系统自动调用. paintEvent(QPaintEvent *)函数是QWidget类中的虚函数,用于ui的绘制,会在多种情况下被其他函 ...

  4. 【HEOI2012】采花 BZOJ2743

    Description 萧芸斓是Z国的公主,平时的一大爱好是采花. 今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花.花园足够大,容纳了n朵花,花有c种颜色(用整数1-c表示),且花是排成一 ...

  5. Angular2 依赖注入

    1. 使用DI 依赖注入是一个很重要的程序设计模式. Angular 有自己的依赖注入框架,离开了它,我们几乎没法构建 Angular 应用.它使用得非常广泛,以至于几乎每个人都会把它简称为 DI. ...

  6. PowerDesigner通过SQL语句生成PDM文件

    前提: 我用的是PowerDesigner15 数据库为Mysql5.5 步骤如下: 第一步:File->New Model 点击OK创建模板就行了 备注:在创建物理模型时DBMS下拉框是空的, ...

  7. day6

    开发一个简单的python计算器 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568 ...

  8. 定时器setInterval 开始、暂停、继续!

    活不多说,最近写这个定时器,,遇到了一些问题.然后上网百度.避免以后朋友遇到类似问题.贴出代码.... 最主要就是定义全局变量. 下面重要的我红色 标注出来. 批注:如 赋值代码,请给出源码地址.O( ...

  9. 在 Angularjs 中 ui-sref 和 $state.go 如何传递参数

    1 ui-sref.$state.go 的区别 ui-sref 一般使用在 <a>...</a>: <a ui-sref="message-list" ...

  10. Officel常用操作

    Excel: 1.隔行变色|菜单->条件格式->其它规则->使用公式->"=MOD(ROW(),2)=0" 2.查找包含特定字符的单元格,并替换整个单元格 ...