前端发起网络请求的几种方式1

简介: 前端发起网络请求的几种方式1

前端发起网络请求的几种方式


当前,前后端分离已成为互联网项目开发的业界标准,通过JSON数据格式进行前后端数据的交互可以对整体项目进行有效的解耦,前后端分离也为项目未来的分布式架构、多端化服务扩展打下坚实的基础。


前后端分离,离不开前端代码与后端代码的数据交互。


那么前端都有哪几种向后端发起请求的方式呢?


js直接发起XHR


XHR作为兼容性最好的纯数据请求方式,被广泛用于前端数据请求。


所有现代浏览器 (IE7+、Firefox、Chrome、Safari 以及 Opera) 都内建了 XMLHttpRequest 对象。


它可以


  • 在不重新加载页面的情况下更新网页


  • 在页面已加载后向服务器请求数据


  • 在页面已加载后从服务器接收数据


  • 在后台向服务器发送数据


它是异步请求数据的首选。


早期jQuery时代的 $.ajax 还是现在流行的 axios,底层原理其实都是 new XMLHttpRequest()。


它出生较早,数据使用回调的方式进行处理,写法较繁琐。


xhr可以原生支持异步请求


使用示例:

var xhr = new XMLHttpRequest();
 xhr.open("get","url", true);
 xhr.send(null);
 xhr.onreadystatechange = function(){
     if(xhr.readyState === 4){
         if(xhr.status == 200){
             alert(xhr.responseText);
         }
     }
 }


featch API


现代前端发起请求的标准方式,大大简化了发起请求的复杂度,代码量较少。


天然融合promise,默认异步,只有网络异常或跨域时才会reject掉。


想要实现同步效果需要借助 async await


较底层,可用于文件数据流读取


它是浏览器原生支持的,可以不用引用http的类库即可实现发送请求

但是fetch也是有兼容问题的,但随着时间的流逝,浏览器厂商的升级,IE的死亡,这个问题在不久的将来不会是大问题fetch配置请求是否携带cookie和接受服务端写入cookie是需要额外设置的credentials


使用示例:


fetch('url', {
   method: 'GET', // *GET, POST, PUT, DELETE
   body: '',
   headers: {
       'user-agent': 'Mozilla/4.0',
       'content-type': 'application/json'
     },
   credentials: 'include'  
 })
   .then(function(response) {
     return response
   })
   .then(function(response) {
     console.log(response);
   });


图片的src请求


众所周知,HTML中img标签,只要放置了src属性,就会发出请求。

重复的图片地址,所有浏览器都只请求一次。


常用于加载一张图片用于显示或绘制画布。


用于统计打点。好处是资源消耗超少,天然跨域。但由于是Get请求,数据量有限制。

<img src="xx.xx" style="display: none"/>


相关文章
|
7月前
|
XML 存储 前端开发
前端网络请求真的搞懂了吗?解密前端参数传递方式,让开发更从容(三)
前端网络请求真的搞懂了吗?解密前端参数传递方式,让开发更从容
|
7月前
|
XML JSON 前端开发
前端网络请求真的搞懂了吗?解密前端参数传递方式,让开发更从容(二)
前端网络请求真的搞懂了吗?解密前端参数传递方式,让开发更从容
|
1月前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
128 1
|
4月前
|
前端开发 算法 网络协议
如何学习计算机基础知识,打好前端和网络安全的基础
如何学习计算机基础知识,打好前端和网络安全的基础
61 4
|
4月前
|
前端开发 安全 网络安全
前端必备网络安全知识
【8月更文挑战第25天】前端必备网络安全知识
69 1
|
4月前
|
数据采集 资源调度 JavaScript
Node.js 适合做高并发、I/O密集型项目、轻量级实时应用、前端构建工具、命令行工具以及网络爬虫和数据处理等项目
【8月更文挑战第4天】Node.js 适合做高并发、I/O密集型项目、轻量级实时应用、前端构建工具、命令行工具以及网络爬虫和数据处理等项目
70 5
|
6月前
|
JavaScript 前端开发 网络协议
前端JS发起的请求能暂停吗?
在讨论前端JS发起的请求是否能暂停时,需要明确两个概念:什么状态可以被认为是“暂停”?以及什么是JS发起的请求?
490 1
前端JS发起的请求能暂停吗?
|
5月前
|
域名解析 缓存 网络协议
前端必备的网络知识 DNS CDN
前端必备的网络知识 DNS CDN
56 0
|
7月前
|
存储 缓存 监控
深入理解前端性能优化:从网络到渲染
网络优化包括减少HTTP请求、使用HTTP/2、开启GZIP压缩和缓存策略。资源加载优化涉及懒加载、预加载和预读取。渲染优化建议使用Critical CSS、减少CSS和JavaScript阻塞以及避免强制同步布局。Service Worker实现离线存储,性能监控使用Lighthouse等工具。动态导入和代码拆分减少初始加载时间,响应式图片适应不同设备。Web Workers处理耗时任务,避免内存泄漏。
98 3
|
7月前
|
存储 XML 前端开发
【Flutter前端技术开发专栏】Flutter中的网络请求与数据处理
【4月更文挑战第30天】本文介绍了Flutter开发中的网络请求和数据处理。 Flutter开发者可选择http(官方库)或dio(功能更强大)进行网络请求。http库简单易用,dio支持更多功能如拦截器。数据处理涉及JSON和XML解析,数据存储可选SharedPreferences或Hive,数据传递推荐使用InheritedWidget或Provider状态管理库。了解这些知识点能提升Flutter开发效率。
186 0
【Flutter前端技术开发专栏】Flutter中的网络请求与数据处理