Web 通信方式
一、HTTP 通信(基础 & 常用)
- XHR(XMLHttpRequest)
- 描述: 古老但仍在使用的 API,尤其是在老项目中。
- 要点: 熟悉其回调地狱问题,有助于理解现代 API 的进化。
- Fetch API ✅
- 描述: 现代浏览器标准,Promise 风格更优雅。
- 要点:
- 支持
AbortController
中断请求。
- 对错误处理要熟练掌握(HTTP 错误不会 throw)。
- Axios (第三方库) ✅
- 描述: 基于
XHR
封装,提供更强的功能(拦截器、自动转换 JSON、取消请求等)。
- 要点: 项目中非常常用,很多公司默认用它。
二、跨域 通信
- 同源策略 & CORS ✅
- 描述: 理解浏览器为什么阻止跨域请求,掌握 CORS 的配置方式(尤其是前后端分离项目)。
- 要点: 掌握 CORS 的配置方式(尤其是前后端分离项目)。
- JSONP (历史遗留) 🔧
- 描述: 只支持
GET
请求,几乎被淘汰,但面试可能问,理解其绕过同源策略的原理。
- 要点: 理解其绕过同源策略的原理。
- iframe 通信:postMessage ✅
- 描述: 在不同源的 iframe 与主页面之间通信。
- 要点: 必须熟悉安全性(验证 origin)。
三、持久连接类 (实时通信场景)
- WebSocket ✅✅
- 描述: 双向通信,适合聊天、游戏、股票行情等实时场景。
- 要点: 前端需掌握连接、断线重连、心跳检测等机制。
- SSE(Server-Sent Event)
- 描述: 单向通信(服务器 → 客户端)。
- 要点: 实现简单,但兼容性和灵活性不如 WebSocket。
- HTTP~2 Server Push (了解即可)
- 描述: 服务器主动推送资源,但前端控制能力有限,应用场景少。
- 要点: 了解即可。
四、客户端内通信 (页面内部模块通信)
- EventEmitter / 发布 - 订阅模式
- 描述: Vue、React 组件间通信时常用。
- 要点: 对状态管理方案有一定依赖。
- CustomEvent / dispatchEvent / addEventListener
- 描述: 原生 DOM 事件系统,组件或模块间的松耦合通信方式。
- 要点: 组件或模块间的松耦合通信方式。
五、服务端通信相关协议 (了解层面)
- RESTful API ✅
- 描述: HTTP 动词语义明确,资源导向,是前端通信的主流方式。
- 要点: 是前端通信的主流方式。
- GraphQL
- 描述: 更灵活的数据查询方式。
- 要点: 需了解其请求结构和客户端库(如 Apollo Client)。
- gRPC (Web 支持中等)
- 描述: 基于 HTTP/2 的高效通信协议。
- 要点: 了解其与 REST/GraphQL 的差异,特别是在大型项目或与移动端协作中。
六、P2P 通信 (了解即可)
- WebRTC (音视频传输、文件分享)
- 描述: 前端实现音视频通话的核心技术。
- 要点: 涉及较多底层知识,如 STUN/TURN、ICE 等。