当前位置: 首页 > news >正文

北京电商网站开发多少钱百度手机网页版入口

北京电商网站开发多少钱,百度手机网页版入口,打广告专用图,免费cdn服务器以下是 XHR(XMLHttpRequest) 与 Fetch API 的全面对比分析,涵盖语法、功能、兼容性等核心差异: 一、语法与代码风格 XHR(基于事件驱动) 需要手动管理请求状态(如 onreadystatechange 事件)和错误处理,代码冗长且易出现回调地狱。 const xhr = new XMLHttpRequest(); x…

以下是 XHR(XMLHttpRequest)Fetch API 的全面对比分析,涵盖语法、功能、兼容性等核心差异:


一、语法与代码风格

  1. XHR(基于事件驱动)
    需要手动管理请求状态(如 onreadystatechange 事件)和错误处理,代码冗长且易出现回调地狱。

    const xhr = new XMLHttpRequest();
    xhr.open('GET', 'https://api.example.com/data');
    xhr.onreadystatechange = function() {if (xhr.readyState === 4 && xhr.status === 200) {console.log(xhr.responseText);}
    };
    xhr.send();
    
  2. Fetch(基于 Promise)
    使用链式调用或 async/await,语法简洁直观,支持现代异步编程模式。

    fetch('https://api.example.com/data').then(response => response.json()).then(data => console.log(data)).catch(error => console.error(error));
    

二、核心功能差异

特性XHRFetch
错误处理需手动检查 status仅网络错误触发 catch,HTTP 错误需通过 response.ok 判断
跨域请求需设置 withCredentials默认不支持跨域,需通过 CORS 配置
流式传输仅部分浏览器支持(如 IE)原生支持 ReadableStream,适合大文件处理
请求取消通过 xhr.abort() 实现需依赖 AbortController
进度监听支持 onprogress 事件无原生支持,需通过第三方库实现
Cookie 处理默认携带需设置 credentials: 'include'
响应类型需手动设置 responseType通过 .json().text() 等方法解析

三、性能与扩展性

  1. XHR
    优点:兼容性好(支持 IE10+),适合需要精细控制请求头、同步请求的场景。
    缺点无法直接处理流数据,内存占用较高。

  2. Fetch
    优点:基于 Promise 和 Stream,支持分块读取数据,减少内存压力。
    缺点默认不处理 Cookie,需手动配置;不支持同步请求


四、适用场景

  1. 优先选择 XHR
    • 需要兼容旧浏览器(如 IE)。
    • 需要实时监听上传/下载进度(如大文件传输)。
    • 需要直接取消请求(如用户中断操作)。

  2. 优先选择 Fetch
    • 现代 Web 应用,追求代码简洁性和可维护性。
    需要流式处理数据(如实时日志或视频流)
    • 与 Service Worker 结合实现离线缓存或请求拦截


五、生态系统与工具

XHR 封装库axios(支持浏览器和 Node.js)、jQuery.ajax
Fetch 封装库redaxios(轻量兼容)、umi-request(企业级功能)。
Polyfill:Fetch 需引入 isomorphic-fetchwhatwg-fetch 支持旧浏览器。


总结

XHR 作为传统 API,适合需要精细控制或兼容性的场景;Fetch 凭借现代化设计和流式处理能力,更适合追求开发效率和性能优化的项目。实际开发中可根据项目需求灵活选择,甚至两者结合使用(如用 axios 兼容 XHR 和 Fetch)。


以下是 XHRFetch 的 GET/POST 请求基础写法及封装方法,结合两种技术的核心特性与最佳实践:


一、原生写法对比

1. XHR 实现

GET 请求

const xhrGet = new XMLHttpRequest();
xhrGet.open('GET', 'https://api.example.com/data?id=1');
xhrGet.onreadystatechange = function() {if (xhrGet.readyState === 4 && xhrGet.status === 200) {console.log(JSON.parse(xhrGet.responseText));} else if (xhrGet.status >= 400) {console.error('请求失败:', xhrGet.status);}
};
xhrGet.send();

POST 请求

const xhrPost = new XMLHttpRequest();
xhrPost.open('POST', 'https://api.example.com/data');
xhrPost.setRequestHeader('Content-Type', 'application/json');
xhrPost.onreadystatechange = function() {if (xhrPost.readyState === 4 && xhrPost.status === 201) {console.log('创建成功:', xhrPost.responseText);}
};
xhrPost.send(JSON.stringify({ name: 'Alice', age: 30 }));
2. Fetch 实现

GET 请求

fetch('https://api.example.com/data?id=1').then(response => {if (!response.ok) throw new Error(`HTTP错误: ${response.status}`);return response.json();}).then(data => console.log(data)).catch(error => console.error('请求失败:', error));

POST 请求

fetch('https://api.example.com/data', {method: 'POST',headers: { 
http://www.cadmedia.cn/news/11831.html

相关文章:

  • 专业建站策划网络营销就是seo正确吗
  • 昆明百度小程序重庆seo小潘大神
  • 微信app官方下载安装seo外推
  • 我想网站建设淘宝seo什么意思
  • 如何做网站内链优化sem是什么基团
  • 黄金网站软件app大全视频移动营销
  • 科技期刊淮北seo排名
  • 网站建设中 html5 模板私域营销
  • 怎么做网站门户个人网站制作源代码
  • 滁州网站建设珠海seo排名收费
  • 买公司的网站百度快速排名工具
  • 网页设计网站概述怎么写友情链接交换的意义是什么
  • 惠州网站建设推荐乐云seoseo分析seo诊断
  • 淮南微信网站建设地推团队
  • 网站域名解析页面百度推广运营怎么做
  • 中华人民住房和城乡建设厅网站自制网页
  • 自己网站如何做关键词网站seo设计
  • 做推送封图的网站公司网站设计需要多少钱
  • 开发者门户网站是什么意思无锡网站优化公司
  • 新疆建设兵团125团网站深圳seo外包公司
  • 广告投放申请入口迈步者seo
  • 做网站在国外发图片房产网站模板
  • 深圳品牌馆设计装修公司网站怎样优化文章关键词
  • 怎么在服务器上面建设网站网站之家
  • 可视化拖拽建站系统平台如何做推广
  • 公司网站平台的作用产品推广方法
  • 企业所得税计算公式怎么算山东seo优化
  • 团队介绍网站建设企业培训网
  • 栾城网站建设怎么样推广自己的店铺和产品
  • 那个网站可以做域名跳转的北京官网优化公司