webpack-dev-server 小记 原理介绍 概念解读
使用 DevServer
提供 HTTP 服务而不是使用本地文件预览
监听文件的变化并自动刷新网页,做到实时预览
支持 Source Map,以方便调试
对于这些,Webpack 都为我们考虑好了。Webpack 原生支持上述第 2、3 点内容,再结合官方提供的开发工具 DevServer 也可以很方便做到第 1 点。DevServer 会启动一个 HTTP 服务器用于服务网页请求,同时会帮助自动 Webpack,并接受 Webpack 发出的文件变更信号,通过 WebSocket 协议自动刷新网页做到实时预览。
这意味着 DevServer 启动的 HTTP 服务器监听在 8080 端口,DevServer 启动后会一直驻留在后台保持运行,访问这个网址,就能获取项目根目录下的 index.html 了。用浏览器打开这个地址时我们会发现页面空白,错误原因是 ./dist/bundle.js 加载404了。同时我们会发现并没有文件输出到 dist 目录,原因是 DevServer 会将 Webpack 构建的文件保存在内存中,在要访问输出的文件时,必须通过 HTTP 服务访问。 由于 DevServer 不会理会 webpack.config.js 里配置的 output.path 属性,所以要获取 bundle.js 的正确 URL 是 http://localhost:8080/bundle.js
Webpack 在启动时可以开启监听模式,之后 Webpack 会监听本地文件系统的变化,在发生变化时重新构建出新结果。 Webpack 默认关闭监听模式,我们可以在启动 Webpack 时通过 --watch 来开启监听模式。
通过 DevServer 启动的 Webpack 会开启监听模式,当发生变化时重新执行构建,然后通知 DevServer。DevsServer 会让 Webpack 在构建出的 JavaScript 代码里注入一个代理客户端用于控制网页,网页和 DevServer 之间通过 WebSocket 协议通信,以方便 DevServer 主动向客户端发送指令。DevServer 在收到来自 Webpack 的文件变化通知时,通过注入的客户端控制网页刷新。
如果尝试修改 index.html 文件并保存,则我们会发现这并不会触发以上机制,导致这个问题的原因是 Webpack 在启动时会以配置里的 entry 为入口去递归解析出 entry 所依赖的文件,只有 entry 本身和依赖的文件才会被 Webpack 添加到监听列表里。而 index.html 文件是脱离了 JavaScript 模块化系统的,所以 Webpack 不知道它的存在。
支持 Source Map
在浏览器中运行的 JavaScript 代码都是编译器输出的代码,这些代码的可读性很差。如果在开发过程中遇到一个不知道原因的 Bug,则我们可能需要通过断点调试去找出问题。在编译器输出的代码上进行断电调试是一件辛苦和不优雅的事情,调试工具可以通过 Source Map 映射代码,让我们在源代码上断点调试。Webpack 支持生成 Source Map,只需要在启动时带上 --devtool source-map 参数。重启 DevServer 后刷新页面,在打开 Chrome 浏览器的开发者工具,就可以在 Sources 栏中看到可调试的源代码了
webpack-dev-server 小记 原理介绍 概念解读的更多相关文章
- 笔记:配置 webpack dev server
笔记:配置 webpack dev server 安装 webpack-dev-server 组件 配置 webpack.config.js 配置 增加 html-webpack-plugin 组件 ...
- [Webpack] Access Webpack Dev Server from Mobile Safari on an iPhone
Testing your sites on mobile devices is a critical part of the development process. Webpack dev serv ...
- 配置Webpack Dev Server 实战操作方法步骤
本文摘要:配置 Webpack Dev Server 可以解决本地开发前端应用时,手动执行 webpack 命令或 yarn build 命令,再去浏览器中访问 dist/index.html 的麻烦 ...
- 【转】Spark History Server 架构原理介绍
[From]https://blog.csdn.net/u013332124/article/details/88350345 Spark History Server 是spark内置的一个http ...
- webpack dev server 和 sublime text 配合时需要注意的地方
参考:https://webpack.js.org/guides/development/ Adjusting Your Text Editor Some text editors have a &q ...
- webpack dev server 配置 启动项目报错Error: listen EADDRINUSE
Error: listen EADDRINUSE 0.0.0.0:5601 它的意思是,端口5601被其他进程占用. 切换端口即可解决问题
- LDAP概念和原理介绍
LDAP概念和原理介绍 相信对于许多的朋友来说,可能听说过LDAP,但是实际中对LDAP的了解和具体的原理可能还比较模糊,今天就从“什么是LDAP”.“LDAP的主要产品”.“LDAP的基本模型”.“ ...
- T-SQL查询进阶--理解SQL Server中索引的概念,原理以及其他
简介 在SQL Server中,索引是一种增强式的存在,这意味着,即使没有索引,SQL Server仍然可以实现应有的功能.但索引可以在大多数情况下大大提升查询性能,在OLAP中尤其明显.要完全理解索 ...
- 理解SQL Server中索引的概念,原理
转自:http://www.cnblogs.com/CareySon/archive/2011/12/22/2297568.html 简介 在SQL Server中,索引是一种增强式的存在,这意味着, ...
随机推荐
- WPF 为资源字典 添加事件响应的后台类
原文:WPF 为资源字典 添加事件响应的后台类 前言,有许多同学在写WPF程序时在资源字典里加入了其它控件,但又想写事件来控制这个控件,但是资源字典没有CS文件,不像窗体XAML还有一个后台的CS文件 ...
- Win10《芒果TV》春季商店版更新v3.3.0:全新视觉蜕变&支持快男直播
在微软发布Win10创意者更新正式版前夕,Win10版<芒果TV>迅速更新至v3.3.0,主要是全新升级视觉交互,新增大咖快男个人直播,全面优化底层架构,启动大提速. Win10版< ...
- PING[ARC2]: Heartbeat failed to connect to standby 'gqtzdb_dg'. Error is 16047
Data Guard搭建完毕之后,执行开启归档路径2,结果发现不同步, SQL> alter system set log_archive_dest_state_2=enable; 查看错误日志 ...
- AngularJS的简单使用(入门级)
AngularJS诞生于2009年,由Misko Hevery 等人创建,后为Google所收购.是一款优秀的前端JS框架,已经被用于Google的多款产品当中. AngularJS有着诸多特性,最为 ...
- UWP 设置控件样式四种方法
1.隐式方法,通过仅指定 Style 的 TargetType.(设置全部的Button样式) <Page.Resources > <Style TargetType="B ...
- 华为ensp的安装和使用
去年学完了Cisco的路由交换,从CCNA学到CCIE.学完之后才发现,整个国内市场好像更倾向于使用华为.H3C这类国有网络设备厂商.不过还好,至少网络的基础理论知识是相同的,于是买了基本关于HUAW ...
- Linux kernel version dirty
在我们使用git来管理Linux Kernel的时候,在编译的时候会在你的kernel version加上git commit number 有时候还会出现dirty字样,字面意思是内核被污染的意思. ...
- matplotlib简介
python的matplotlib包可以帮助我们绘制丰富的图表,有助于我们的数据分析. matplotlib官方文档:matplotlib 本博客所有代码默认导入matplotlib.pyplot和n ...
- 重写QLineEdit,实现编辑框内添加删除按钮的功能(随时把控件Move到一个地方,然后show就可以了,这是万能的办法)
http://www.qtcn.org/bbs/read-htm-tid-62265-ds-1-page-1.html#180286
- Tencent://Message/协议的实现原理(Windows提供协议注册)
腾讯官方通过 Tencent://Message/协议可以让QQ用户显示QQ/TM的在线状态发布在互联网上:并且点击 XXX ,不用加好友也可以聊天 官方链接: http://is.qq.com/w ...