写点什么

五种常见 Ajax 反模式

  • 2007-04-01
  • 本文字数:832 字

    阅读完需:约 3 分钟

Jack Herrington 根据自己在 Ajax 领域的开发经验,撰写了一篇文章,深入讨论了 Ajax 代码中常犯的错误。他阐述了五个足以被认定为反模式(anti-pattern)的常见具体问题,总结如下:

滥用定时器(Timer)进行轮流监测。尽管 JavaScript 拥有定时器功能(通常使用 window.setInterval()),但我们只能因地制宜地使用。把它用在动画上是合理的,但对于其它方面我们就必须仔细斟酌了。最显而易见的危险信号就是使用定时器来监视请求的完成。这种情况下应该使用回调而不是轮流监测的方式。

在回调中没有检查返回结果。在使用 XMLHTTPRequest 对象的 processReqChange() 回调时,必须对回调参数的 readyState 和 status 值进行检查。回调常常会在结果完成之前被调用。假如没有检查此结果,在代码试图处理不完整数据时可能会引起错误。

在传递 HTML 更合适的情况下,传递复杂的 XML。将 XML 格式化成浏览器中显示的 HTML 可能需要编写大量的 JavaScript,这可能导致开发人员不得不面对更多的浏览器兼容性问题。

就和你做所有事情一样,到底该在服务端还是客户端处理的选择应该根据工作的需求而定。在这种情况下,举一个相对简单的例子:给出一个电影列表。如果工作更复杂一些的话——可能包含排序,添加或删除,或者进行动态交互,在点击某个电影的时候显示更多的信息——那么在客户端将包含更复杂的代码。实际上,在本文结尾,我将演示如何对在客户端排序,探讨将负载过多地置于服务端的驳论。

在该传递 JavaScript 代码时,传递 XML。简而言之,在你可以使用 JSON 时不要用 XML:

这里的好处是显而易见的。在本例中,使用 JavaScript 语言客户端下载的数据量节省了 52%,并且性能上也得到提升,读取 JavaScript 版本速度快了 9%。尽管 9% 看起来并不多,不过要注意的是这个例子还尚未完善。更为庞大的数据块或者更复杂的结构将会带来更多的 XML 解析代码,而 JavaScript 则会保持不变。

在服务端进行过多处理。简单的单页面功能,如表格排序,在 JavaScript 中处理起来比服务端处理得更快,效率也更高。

2007-04-01 23:001097
用户头像

发布了 117 篇内容, 共 18.8 次阅读, 收获喜欢 0 次。

关注

评论

发布
暂无评论
发现更多内容

Android----Matrix-与坐标变换

android 程序员 移动开发

Android-技术的下半场

android 程序员 移动开发

Android-系统预设-App,有什么难的?

android 程序员 移动开发

Android 程序员不得不收藏的 90+ 个人博客(持续更新

android 程序员 移动开发

Android 集成讯飞SDK实现语音拨号、语音导航、语音启动应用

android 程序员 移动开发

Android 调用相机拍照,适配到Android 10

android 程序员 移动开发

Android-Volley完全解析(一),初识Volley的基本用法!

android 程序员 移动开发

Android-音视频学习系列-(三)-Shell-脚本入门

android 程序员 移动开发

Android-音视频学习系列-(八)基于-Nginx-搭建(rtmp、http)直播服务器

android 程序员 移动开发

Android-音视频学习系列-(十)基于-FFmpeg-+-OpenSLES-实现音频万能播放器

android 程序员 移动开发

android下拉刷新——swipeRefresh的使用

android 程序员 移动开发

Android-ContentProvider实例详解(1)

android 程序员 移动开发

AndroidAPP启动速度优化;冷启动和热启动解析

android 程序员 移动开发

Android 横向ListView实现

android 程序员 移动开发

Android 这座山,我一定要爬到顶

android 程序员 移动开发

Android-Handler机制详解

android 程序员 移动开发

Android-R-中的heap新分配器——Scudo

android 程序员 移动开发

基于 KubeVela 的 GitOps 交付

阿里巴巴云原生

阿里云 Kubernetes 云原生 gitops KubeVela

Android-多渠道打包配置;你了解吗?

android 程序员 移动开发

Android-自定义图像资源的使用(2)

android 程序员 移动开发

Android 面试必备 - 系统、App、Activity 启动过程

android 程序员 移动开发

Android 设置默认Launcher

android 程序员 移动开发

Android-kotlin的继承

android 程序员 移动开发

Android 自定义软键盘实现 数字九宫格(1)

android 程序员 移动开发

Android 自定义软键盘实现 数字九宫格

android 程序员 移动开发

Android 获取设备信息

android 程序员 移动开发

加速SaaS规模化演进,餐道基于K8s的云上创新底座

阿里巴巴云原生

阿里云 Kubernetes 云原生 SaaS 智慧餐饮

Android-举一反三:12个View绘制流程高频面试题,带你全面理解View的绘制流程

android 程序员 移动开发

Android-高级-UI-进阶之路-(五)-看完该篇文章-Canvas-你应该会了

android 程序员 移动开发

android下赚钱的几个方式

android 程序员 移动开发

android 方式实现imageview圆角

android 程序员 移动开发

五种常见Ajax反模式_Java_James Kao_InfoQ精选文章