在实际开发中,前端操作数据ajax是必备的
一般从以下几个方面考虑使用哪个方案
- 代码实现
- 兼容性
- 优缺点
接下来对有关js的几种ajax 方案在代码实现,兼容性,优缺点等方面做下对比
comparison | js 原生 ajax | jq ajax | superagent | fetch API | fetch(node) / node-fetch | rxjs ajax | 备注 |
---|---|---|---|---|---|---|---|
实现 | js XMLHttpRequest ActiveX | js XMLHttpRequest ActiveX | js XMLHttpRequest ActiveX | 浏览器API | 基于node http,https服务 | js XMLHttpRequest ActiveX | 所有现代浏览器(IE7+、Firefox、Chrome、Safari 以及 Opera)均内建 XMLHttpRequest 对象 老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 对象 |
兼容 | IE7+、Firefox、Chrome、Safari 以及 Opera,IE5,6 | IE7+、Firefox、Chrome、Safari 以及 Opera,IE5,6 | IE7+、Firefox、Chrome、Safari 以及 Opera,IE5,6 | Fetch 是浏览器提供的原生 AJAX 接口;基于 Promise;不需要依赖第三方库,就可以优雅地使用 AJAX;GitHub - github/fetch: A window.fetch JavaScript polyfill. | node server | IE7+、Firefox、Chrome、Safari 以及 Opera,IE5,6 | |
建议 | 封装原生代码代价较大,但开发过程可以深入理解ajax过程,并亲自踩下坑 | 前端神器,“老夫写代码就用jQuery”,ajax 部分功能很完善 | 比较喜欢,也一直在用,源码不错的 | -- | -- | 要接受rx整体思想用起来才会更爽 | |
下载量/使用量(只做npm统计) | -- | jq nmjs 日下载量 40000+ | nmjs 日下载量 35000+ | -- | nmjs 日下载量 200+/40000+ | rxjs npmjs 日下载量 30000 | |
优缺点 | 优点:锻炼基本js 基础;<br>缺点:编码量大 | 优点:大部分开发者熟悉;缺点:1、接入vue,再使用jq 有些累赘2、适用于客户端 | 优点:浏览器端,node server 相同 API;缺点:--- | 优点:未来网络请求方案,node sever 端现在可以使用 node-fetch 代替;缺点:兼容差,要对ie 等不兼容设备做兼容处理 | 优点:流的概念,新的思想;缺点:学习成本较高 | ||
异步方案 | promise | promise,Deferred | promise, async/await | promise | promise | promise | 异常使用promise.catch捕获 |
- 实际开发中可根据现有架构及团队构成进行选择
- 个人比较倾向superagent和rx,目前团队中使用superagent,后续会做个关于superagent使用的手记
热门评论
很实用,就是结构有点不好