写点什么

五种常见 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:00877
用户头像

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

关注

评论

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

价值连城 图灵奖得主Yoshua Bengio约书亚·本吉奥的采访 给AI从业者的建议 John 易筋 ARTS 打卡 Week 60

John(易筋)

ARTS 打卡计划

如何理解 Java 多线程

HoneyMoose

机会!痛点!难点!中国游戏泛娱乐企业出海攻略全解析

环信

游戏出海 直播 社交APP出海 泛娱乐社交

去哪儿网数据同步平台技术演进与实践

Qunar技术沙龙

数据库 数据中台 ES 数据同步 Kafk

腾讯WeTest零售行业质量解决方案

WeTest

云时代的到来会淘汰运维人员吗?运维工作可以一直做吗?

行云管家

云计算 运维 云服务 IT运维 云时代

如何找到程序崩溃的 “凶手” ?

神策技术社区

数据库 程序员 埋点

千亿级模型在离线一致性保障方案详解

百度Geek说

百度 测试 后端

堡垒机品牌就认行云管家!为什么呢?

行云管家

云计算 系统运维 堡垒机 IT运维 云计算运维

前端基础二之css篇

ベ布小禅

8月日更

MySQL 系列教程之(六)DML 操作:数据的增删改

若尘

数据库 MySQL 数据库 8月日更

webrtc AlrDetector

webrtc developer

底层即真理!Netty+Redis+ZooKeeper解读高并发架构

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

太为难我了,阿里面试了7轮(5年经验,拿下P7岗offer)

Java 编程 程序员 架构 面试

银行小程序隐私安全如何做?诊疗一体,一步到位

WeTest

【LeetCode】学生考勤Java题解

Albert

算法 LeetCode 8月日更

业界良心啊!第五次更新的Spring Cloud Alibaba升级太多内容

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

LeetCode题解:217. 存在重复元素,哈希表,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

linux工具之TC

webrtc developer

多线程、分布式、高并发都不懂?你拿什么跳槽?

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

老板不让用 AFNetworking,我该怎么办?

神策技术社区

大前端 后端 数据 数据采集

webrtc Rtp/rtcp (1)

webrtc developer

从“人工”到“人工智能”,聊一聊本届东京奥运会的AI黑科技

行者AI

使用账号密码来操作github? NO!

程序那些事

Java GitHub 程序那些事

基于KubeEdge实现中国移动10086客服云边协同平台

华为云原生团队

云计算 开源 运维 边缘计算 边缘技术

EMQ 映云科技成为开源项目 Vue.js 定期捐赠者

EMQ映云科技

Java 开源 大前端 emq

二本渣渣5面阿里,从准备简历到“直怼”面试官,经历了什么?

Java 程序员 架构 面试 计算机

大一一个学期学多少编程算正常?

沉默王二

编程

多张图片的形式

冇先生

给Arm生态添把火,腾讯Kona JDK Arm架构优化实践

腾源会

开源 腾讯 jdk 腾讯开源 KonaJDK

centos8 mediasoup 搭建

webrtc developer

WebRTC mediasoup

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