如果可能的话,我应该使用 angularjs $http服务来处理请求还是 jquery ajax

Should I use angularjs $http service for requests or jquery ajax if possible?

本文关键字:处理 服务 http 请求 ajax jquery angularjs 我应该 如果      更新时间:2023-09-26

在我的项目中,我使用 angularjs 框架,并且喜欢在进行 ajax 调用时使用 $http 服务。但是在项目的某些部分,ajax 调用不会直接更新 UI 并且不需要 angularjs 绑定,我应该使用$http服务还是普通jquery.ajax

更具体地说,我应该最小化项目中不涉及 UI 的 angularjs 依赖项,还是用 angular 服务和指令紧密包裹整个项目?

如果您使用的是 Angularjs,那么您应该使用 $http 作为进行 ajax 调用的首选方法。该服务不必绑定到 ui 或影响 ui。

仅当您无法使用角度服务执行操作时,才应使用 Jquery Ajax 调用,如果您遵循 angularjs 最佳实践,这种情况很少见。

此外,如果您使用 http 服务,则可以使用拦截器来创建请求并处理响应,然后再将它们提供给调用的成功部分。这些用于处理全局错误并显示全局通知,可以说,可以在任何响应中出现。此外,您可以在此处的每个请求之前添加标头和更多信息。您也可以在此处对请求/响应进行编码/解码,以便所有这些实用程序功能都在同一位置完成。查看以下链接:带有拦截器的 HTTP 服务文档

如果你仍然需要从外部角度环境调用$http,你应该尽量避免,做一个角度的通用实用程序函数,并将其包装在某个可以直接调用的函数中。

我个人建议将其与封装http请求的公共服务层保持一致。虽然你可以混合它,但我只建议在处理已经用jquery编写的代码时才这样做。此外,如果您最终想要稍后更改它以更新 UI,则必须返回并更改 jquery 调用。

Blaise已经提出的另一点是,如果你正在做单元测试并想模拟响应,$http真的很闪耀。下面是一个示例:http://www.unit-testing.net/CurrentArticle/How-to-mock-http-calls-in-Angular.html

如果 Ajax 请求不与 UI 交互,这并不重要。$http类似于 Ajax 请求,最大的区别是$http注册到使用新数据更新 UI 的摘要周期。如果不需要UI更新,您可以使用任何让您满意的东西。

强烈建议您使用

Angular 基础设施。对于 jQuery 开发人员来说,对 Angular 有很好的介绍http://www.ng-newsletter.com/posts/angular-for-the-jquery-developer.html

有关于$http与$.ajax之间区别的讨论Angularjs $http VS jquery $.ajax从jquery $.ajax到Angular $http

过度使用 jQuery 和 Angular 可能会导致一些问题,例如https://github.com/angular/angular.js/issues/2548(jQuery导致ngClick与触摸设备的错误工作)