为什么vue不使用ajax

Z, ZLW 945

vue不使用ajax的原因有:1、快速选择元素无优势;2、方便操作DOMAPI有替代;3、CSS3动画崛起;4、fetch/axios优于AJAX;5、性能问题得到改善;6、框架对jQuery的影响;7、vue对轻量级的追求。其中,快速选择元素无优势指API只需传入CSS选择器形式的字符串就可以匹配。

1、快速选择元素无优势

现在有两个API,只需传入CSS选择器形式的字符串,就可以匹配到预期的DOM节点,浏览器兼容上这两个API也得到了很好的兼容,再者,Vue中也是使用些API进行元素获取的。所以说jQuery快速选择DOM节点的优势已经不存在了。

2、方便操作DOMAPI有替代

对于操作DOM的API,如addClass removeClass等,原生API也有支持, classList,可能IE兼容不是太完美,但是最基本该实现的也都实现了。

3、CSS3动画崛起

动画就比较熟悉了,CSS3动画技术已经是非常成熟,完全可以取代jQuery动画,甚至更好的实现复杂动画,兼容性也好,加上还有比较方便使用的动画库Animate.css,大家一定非常熟悉,所以jQuery动画被取代已经很好理解了。

4、fetch/axios优于AJAX

现在原生JS实现fetchapi还是axios。都给我们提供了强大的ajax的能力,且axiox还有拦截器这个优势。这相较而言,是jQuery的ajax确实已经无法相比的了。加体积也小很多。在IE上fetch也有了polyfill方案(github/fetch)。这样就可以很方便的使用ajax,相对于jQuery就小巧很多。

5、性能问题得到改善

关于性能问题,大家可以花点时间去很好的了解一下Virtual DOM(虚拟DOM)的概念,其实Virtual DOM就是相对真实现DOM节点来以最小变动来改变真实DOM。这只是一个思路,但jQuery在重绘,回流方面确实存在一定影响性能的问题。至于如何改善DOM操作性能,需要好好研究每一步JS操作,甚至每一个样式属性的使用。

6、框架对jQuery的影响

目前有各种框架已经被广泛使用,比如React,Vue,Angular。这些都属于MV*框架,特点都是以数据为核心,操作DOM的事都留给框架去做,这相对于jQuery来来说,开发效率高,代码可维护性高,可扩展性高,性能更好。

再加上webpack打包(当然JQ也可以),脚手架的方便,新语法ES6/7的崛起,使得在编码体验上又上一个体验档次,所以函数式写码必然代替了命令式写码。

7、vue对轻量级的追求

  • 传统的Ajax是基于XMLHttpRequest(XHR);
  • 在vue开发中不需要使用jQuery,因为jQuery很重量级;
  • vue官方在Vue1.x的时候,推出了Vue-resource。Vue-resource较jQuery轻便很多,但在vue2.x之后,尤雨溪对Vue-resource不维护了,简言之,就是弃用了;
  • 尤雨溪推荐使用axios。

拓展阅读

为什么vue不使用ajax用axios:

axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,本质上也是对原生XHR的封装,只不过它是Promise的实现版本,符合最新的ES规范,它本身具有以下特征:

  1. 从浏览器中创建 XMLHttpRequest
  2. 支持 Promise API
  3. 客户端支持防止CSRF
  4. 提供了一些并发请求的接口(重要,方便了很多的操作)
  5. 从 node.js 创建 http 请求
  6. 拦截请求和响应
  7. 转换请求和响应数据
  8. 取消请求
  9. 自动转换JSON数据

回复

我来回复
  • 暂无回复内容

注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部