在开发中,不可避免的需要进行数据之间的交互,而这些数据往往是通过与服务器端进行交互得到,并进行相应的处理等
传统数据通信方式总结
- 原生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):同上
- 多路复用:提升性能
- 更适应现代化网络应用的要求:如桌面浏览器、移动端浏览器、代理/反代理、防火墙、内容付费等支持