10.11xm一面
Node.js 采用 V8 作为 JS 的解析引擎,而 I/O 处理方面使用了自己设计的 libuv,libuv 是一个基于事件驱动的跨平台抽象层,封装了不同操作系统一些底层特性,对外提供统一的 API,事件循环机制也是它里面的实现。
webpackproxy代理是什么
webpack proxy,即 webpack 提供的代理服务
基本行为就是接收客户端发送的请求后转发给其他服务器
其目的是为了便于开发者在开发模式下解决跨域问题(浏览器安全策略限制)
想要实现代理首先需要一个中间服务器,webpack 中提供服务器的工具为 webpack-dev-server
webpack-dev-server
webpack-dev-server 是 webpack 官方推出的一款开发工具,将自动编译和自动刷新浏览器等一系列对开发友好的功能全部集成在了一起
目的是为了提高开发者日常的开发效率,「只适用在开发阶段,线上环境可以使用 nginx代理」
关于配置方面,在 webpack 配置对象属性中通过 devServer 属性提供,如下:
devServetr 里面 proxy 则是关于代理的配置,该属性为对象的形式,对象中每一个属性就是一个代理的规则匹配
属性的名称是需要被代理的请求路径前缀,一般为了辨别都会设置前缀为/api,值为对应的代理匹配规则,对应如下:
- target:表示的是代理到的目标地址
- pathRewrite:默认情况下,我们的 /api-hy 也会被写入到 URL 中,如果希望删除,可以使用 pathRewrite
- secure:默认情况下不接收转发到 https 的服务器上,如果希望支持,可以设置为 false
- changeOrigin:它表示是否更新代理后请求的 headers 中 host 地址
工作原理
proxy 工作原理实质上是利用 http-proxy-middleware 这个 http代理中间件,实现请求转发给其他服务器
举个例子:
在开发阶段,本地地址为 http://localhost:3000,该浏览器发送一个前缀带有/api 标识的请求到服务端获取数据,但响应这个请求的服务器只是将请求转发到另一台服务器中
跨域
在开发阶段, webpack-dev-server 会启动一个本地开发服务器,所以我们的应用在开发阶段是独立运行在 localhost 的一个端口上,而后端服务又是运行在另外一个地址上
所以在开发阶段中,由于浏览器同源策略的原因,当本地访问后端就会出现跨域请求的问题
通过设置 webpack proxy 实现代理请求后,相当于浏览器与服务端中添加一个代理者
当本地发送请求的时候,代理服务器响应该请求,并将请求转发到目标服务器,目标服务器响应数据后再将数据返回给代理服务器,最终再由代理服务器将数据响应给本地
在代理服务器传递数据给本地浏览器的过程中,两者同源,并不存在跨域行为,这时候浏览器就能正常接收数据
注意:「服务器与服务器之间请求数据并不会存在跨域行为,跨域行为是浏览器安全策略限制」
先确保网络连接顺畅 再检查url地址是否错误 打开控制台查看是否有报错信息 查看接口访问是否有请求 查看路由是否有path错误,导致加载了不存在的页面从js和css方面检测
排除了 网络问题 以后,如果还是白屏,那一般都是 css和js 加载造成的;css和js 会造成阻塞渲染。比如不正确的引入css和js , 就会导致它们的加载速度过长,从而导致白屏现象。 正确的引入方式是:
在 <head> 标签中引入css:因为在加载HTML 前不先渲染css 的话,整个页面会乱掉; 在 </body> 标签之前、body 标签中html 内容的后面 ,引入 js:因为浏览器加载script 标签时,处理内部代码的顺序都是从上到下 依次执行的,如果在 html 内容前就引入js 的话,那么就会导致,在所有的代码处理完毕之前,会阻塞其他资源的加载;会导致页面的其他内容都无法显示,因此如果不规范引入js的话,会对页面的其他内容带来影响。
假如主机A知道主机B的ip地址,但是在二层链路,也就是数据链路层,是通过mac地址进行转发的,那么在不知道的情况下又怎么获取到对方的mac地址呢?就需要通过ARP协议来获取解析