乐趣区

数据通信

在开发中,不可避免的需要进行数据之间的交互,而这些数据往往是通过与服务器端进行交互得到,并进行相应的处理等

传统数据通信方式总结

  • 原生 XHR 对象: 用起来麻烦,而且功能受限
  • jsonp 方式:jsonp 可以跨越,但本质上是在绕过同源策略的限制,会带来比较严重的安全隐患,已逐步淘汰
  • $.ajax: 功能丰富、易用,但 jQuery 本身已不是开发主流,所以为了一个 ajax 引入整个 jQuery 很不划算

现代数据通信方式

FromData

用于处理复杂表单操作的对象,用于提交表单、上传文件等应用

FromData 不是数据交互方法,而是一种容器,所以和 fetch、Axios 等不是同类

fetch

原生 xhr 对象的一种高级封装,使用更简便,而且无需引入任何库、性能高,简单封装就可以发挥强大的功能

Axios

专门用于数据通信的库,体积小、性能高,而且可以和各类其他模块 / 库配合 (如:FromData、Redux 等)

WebSocket

全双工通信,服务器可直接推送数据

总结

名称 优点 缺点 适用场景
FromData 表单整体提交、文件上传 无法独立工作
fetch 原生支持 使用稍微麻烦,可进行封装解决 完全代替 ajax
Axios 使用便捷、功能全面 完全代替 ajax
WebSocket 全双工 本身不兼容,但可使用 socket.io 等库 适合服务器推送

HTTP/2

http/1.1 改进版,具有大量的新特性,值得期待啊,哈哈

  • 加密:顺便干掉了 https
  • 头压缩:减少体积
  • 服务端推送:双工通信
  • 流水线请求:大幅降低小对象的请求开销
  • 修复头阻塞问题(HOL Blocking): 同上
  • 多路复用:提升性能
  • 更适应现代化网络应用的要求:如桌面浏览器、移动端浏览器、代理 / 反代理、防火墙、内容付费等支持
退出移动版