webpack-dev-server是一个采用Node.js Express实现的微型服务器, 内部使用webpack-dev-middleware来响应发送到服务器监听单口的HTTP请求。

webpack-dev-server主要用于前端项目的本地开发和调试。

具体使用,只需要在package.json的devDependencies里添加它的依赖即可。

同样在package.json里定义dev script,执行该webpack-dev-server, 这样用命令行npm run dev就可启动webpack-dev-server.

其原理是,npm install后,webpack-dev-server.js就会自动出现在当前项目文件夹的node_modules目录里:

Webpack-dev-server.js的服务器实例通过关键字new创建出来:

在Server.js的内部实现里,第76行我们就能观察到该服务器采用nodejs的express模块实现。

Express实例创建后,通过第78行app.all(’*’, … )挂接处理函数,这个箭头函数(req,res,next) => { 负责处理所有发往这个服务器的HTTP请求。

第92行就是Server.js里webpackDevMiddleware的初始化过程。

现在我们就来看看浏览器里输入localhost:8080后会发生什么事情。

根据前面的描述,浏览器发起前往localhost:8080的请求被webpackDevMiddleware服务,见下图调试截图,其中变量req.url为/,这是我们期望看到的,因为localhost:8080后面没有跟任何路径。

最终会将执行流投递到processRequest函数里,第53行代码说明,如果HTTP请求路径/后没有子路径,则默认返回一个硬编码的index.html

谜团就这样解开了。

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

webpack-dev-server启动后,localhost:8080返回index.html的原理相关推荐

  1. solr 集成web项目后 执行查询时报错Error from server at http://localhost:8080/solr/collection1

    solr 集成web项目后 执行查询时报错Error from server at http://localhost:8080/solr/collection1 本Markdown编辑器使用Stack ...

  2. WEBPACK DEV SERVER

    文/tsyeyuanfeng(简书作者) 原文链接:http://www.jianshu.com/p/941bfaf13be1# 著作权归作者所有,转载请联系作者获得授权,并标注"简书作者& ...

  3. eureka server启动后端口变为8080问题解决

    1.检查项目编译目录下是否有 配置文件 bootstrap.yml 2.如果没有则进行重新编译 3.打开配置文件 bootstrap.yml 4.说明端口号配置为 1025,重新启动服务即可

  4. webpack dev server 和 sublime text 配合时需要注意的地方

    参考:https://webpack.js.org/guides/development/ Adjusting Your Text Editor Some text editors have a &q ...

  5. phpstudy不能启动mysql_phpStudy启动后为什么MYSQL无法启动

    匿名用户 1级 2016-09-11 回答 phpstudy中apache或mysql无法启动 phpstudy中apache或mysql无法启动,启动一下没了 明显端口被占用了,假如我们需要确定谁占 ...

  6. springboot使用swagger2时,访问http://localhost:8080/swagger-ui.html页面404,无法访问

    解决springboot使用swagger2时,访问http://localhost:8080/swagger-ui.html页面404 其实还需导入一下依赖 <dependency>&l ...

  7. 关于 tomcat启动后无法访问的问题(localhost:8080 (or your port specified))

    [0]README 1)启动 tomcat7, 然后通过 localhost:8080 无法访问,我也是醉了:以下给出了解决方法: [1]解决方法(如何让 Server Locations  和 de ...

  8. 关于tomcat启动后http://localhost:8080/打不开页面的解决方案

    一.tomcat9.0的下载 官网:https://tomcat.apache.org/ 下载后解压到要安装的目录下面. 二.配置环境变量 右击"我的电脑"--属性--高级系统设置 ...

  9. 关于tomcat服务器启动后访问localhost:8080报错500或者404的解决

    一.问题描述 昨天安装了tomcat9.0以后,尝试启动服务器,访问localhost:8080测试是否启动成功,结果提示404.有趣的是,在我刷新了一下页面以后报错又变成了500,错误提示主要内容就 ...

最新文章

  1. eltable刷新整个表格方法_Word表格函数计算怎么做?都在这篇!
  2. 0122 - EOS 编程学习日志(1)
  3. SQL语法之DDL和DML
  4. python连接oracle导出数据文件
  5. 虚机和实体服务器性能,虚机的性能主要与以下几方面有关
  6. 「干货」什么Linux是邮件服务器?
  7. 程序员如何优雅地使用 Mac?
  8. 利用IAR调试Mini2440
  9. C#中获取路径的几种方法
  10. conda创建的环境,打包下载,然后在其他设备离线安装环境,python部署时需要依赖,通过conda一步解决依赖迁移问题
  11. Killing Parallel Query Session
  12. fseek函数、ftell函数、rewind函数详解
  13. FPGA Nios II学习笔记一
  14. 「LSTM 之父」亲笔万字长文,只为向世人证明:深度学习不是在母语为英语的地方被发明的...
  15. 马铃薯纤维的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  16. 同步与异步通信的区别
  17. windows10忘记开机密码解决办法
  18. 论文阅读:Adaptive Graph Convolution for Point Cloud analysis
  19. 企业数字化转型的驱动引擎—看中机云如何赋能企业,纵横云端|中机智库
  20. UVA1589 象棋 + UVA 220 黑白棋

热门文章

  1. 文献记录(part11)--Biclustering of Expression Data
  2. R语言之离群点检验(part2)--局部离群点因子LOF检验
  3. 使用在线编辑器创建 SAP UI5 项目并运行
  4. 如何在 SAP 电商云 Spartacus 代码里获取 Routes 路由信息
  5. de.hybris.platform.servicelayer.dto.converter.ConversionException
  6. SAP Fiori Service Modeler
  7. 一个关于Angular Directive selector里的中括号使用问题
  8. 一个SAP成都研究院开发工程师 2020 年的所有文章列表
  9. SAP Spartacus的Lock Focus Directive单元测试实现
  10. SAP Spartacus的ComponentFactory和ComponentFactoryResolver - 动态添加outlet