最近好像在中文社区又多了关于AJAX的讨论,很多都是说AJAX仅仅是过渡技术,又或者说AJAX现在有些滥用了,反正就好像一场狂热下来大家又成了怀疑论者了。

Microsoft Expression

看起来最震撼的事情应该是Microsoft Expression系列被越来越多人知道,很多人都在想WPF在如此强大的设计器支持下能否干掉AJAX。首先说一下Microsoft Expression是什么,这是一个和以前的Macromedia Studio非常类似的工具集,其战略目标应该也非常类似。

以前Studio的成功在于3大产品为设计人员组成流水线,Fireworks设计的图可以直接切片放入DreamWeaver使用,又会者提供给Flash作为素材,而Flash设计完后同样可以直接插入DreamWeaver设计的网页中。现在的Expression则分为Graphic Designer、Web Designer、Interactive Designer这3大产品,Graphic Designer设计的图可以直接提供给Web Designer或Interactive Designer使用,Web Designer用于设计符合Web Standards的页面,而Interactive Designer用于WPF的交互界面,这两者的设计结果最终都放入Visual Studio中添加后台代码。

暂时看来,Web Designer和Interactive Designer是平行产品,也就是Web和WPF并不存在哪个更优的说法。Web Designer已经经过Beta1了,估计正在进入RTM阶段,所以应该会最早发布。Expression的出现对于程序员来说可以说是好事情,因为在工具上就已经给程序员和美工划分了明确的艰险,这样就可以避免程序员和美工互相推卸责任,界面上的互动效果说不清应该由谁来负责。同时Web Designer是用于设计符合Web Standards的页面的,这就要求美工不能仅仅懂绘图和切片而不懂XHTML+CSS。

Web Designer的出现,应该是美工的噩梦而不是程序员的噩梦,因为终于有一个理由要强迫美工去学好Web Standards有关的技术了。以往拖着美工去看Macromedia的首页(现在是Adobe的首页),告诉他们这是符合Web Standards的门户页设计的顶峰之作,他们会不信。跟他们说,这并排的3个竖栏都是用嵌套<ul />方式排的,所有圆角效果、阴影效果都是CSS而不是切片,他们会说用老的方式排出来同样的效果也没什么不好,除了在移动设备上不好看。现在塞一个Web Designer给他们,界面上优先显示的就是CSS设计功能,让他们设计一个Adobe那样的首页来,他们自然会明白技术差距之远。

至于Interactive Designer和WPF对Web的直接威胁,暂时还是不大的,因为WPF/E才刚刚开始CTP,其适用范围还很有限,比AJAX的支持范围要窄多了。现在AJAX在主流的PC浏览器上都已经实现,并且Opera和Nokia也正在实现AJAX在移动设备上的支持。WPF/E的真正对手是Flash,Macromedia鼓吹了那么多年的RIA都没多少人响应,Flex也不好卖,再杀进来一个WPF/E逼到Flex 2要贱卖了。但就算对Flash来说,WPF/E其实只算得上一个未来的对手,因为它现在仍显得过于“贵族化”——只有花得起钱享受XP/Vista/MacOSX级别界面的用户才有资格享受WPF/E,相对来说Flash则已经算是个“草根明星”了。

AJAX滥用

说到滥用,我们必须承认我们确实滥用了,而且问题还很严重。说到底这是因为我们在为技术而技术,很多场合程序员说了算,而国内程序员的界面设计能力还有待提高。

首先错误来自大家对AJAX使用上的本末倒置,我们看到AJAX通过减少刷新来达到改善用户体验的效果,所以我们开始追求无刷新,而最终变成了技术服务于无刷新,而功能服务于技术,这正所谓之本末倒置。而实际上,应该是来自界面上的需求推动了AJAX的发展,只有当界面需要避免刷新时才使用AJAX。

在这方面,我也不是专家,所以只能建议大家多去看看《About Face 2.0》之类的界面设计书籍,先学习如何设计界面,再学习如何在界面上使用AJAX。简单来说,不刷新是为了不打断用户的思维,让用户连贯性的完成一系列的操作,不需要每次都等待白屏过去然后重新滚动到他操作的位置。然而这是提高用户的好体验的一方面,同时我们还需要降低用户的坏体验。最坏的情况是用户在网站上受了挫折(frustrated)而离开,例如导航无法让他去到正确的位置或者让他获取到所需的信息,又例如用户更改输入提交了几次但每次都有新的提示告诉用户不符合某某输入规则。

AJAX给了机会我们更好的避免这些问题,例如通过AutoComplete获得更佳的搜索导航效果,或者异步的Validation尽早通知用户输入所需要符合的规则及如何更改去符合这些规则。然而除此之外还有很多其他更好的设计。在我们忙碌着做一个AJAX式的弹出日历式日期选择控件,国外的Calendar服务则已经提供了更好的输入方式——它们能够直接识别"Tomorrow 7:00pm dinner with Kathy at home"或"2nd anniversary on Oct 5th."这样的纯文本输入,然后自动从中提取出事件的时间、地点、人物、主题等信息。

现在我们将AJAX的底层技术拿出来作学院式研究没什么不好,但如果你要做的是一个面向最终用户的产品,那在设计时就应该先将AJAX放一边,优先考虑的是用户角色以及他们的需求,如果他们的需求包括到AJAX就把AJAX放上日程,否则就不要管AJAX。国外很多网站的AJAX使用都非常恰当,例如BaseCamp,用户需要连续执行的操作(例如添加多个todo或者将多个todo标记为完成)就提供AJAX支持,这样用户的思路不会被打断,但是无上下文的可打断的操作则保留整页提交的方式。

最后,如果你希望继续关注我的文章,欢迎订阅Cat in Chinese或订阅Cat in dotNET。

AJAX 在中文社区的“集体信仰动摇”?!相关推荐

  1. 精心整理 | R语言中文社区历史文章整理(类型篇)

    2018年过去一半了~又到了盘点的时间~感谢长时间来各位好友的关注,我们的成长与你们的爱护是分不开的.更感谢各位老师的投稿,支撑起了我们的这个社区,让更多R语言的爱好者和从业者获得最棒的知识!本文选取 ...

  2. 以太坊燃烧第一个24小时,中文社区在关心什么?

    8月5日,在区块高度#12965000(北京时间8月5日20:33),备受瞩目的以太坊伦敦升级完成.伦敦升级涉及众多提案,其中最令人关注的是EIP-1559.该提案引入销毁机制,让链上费用更合理,同时 ...

  3. 中文谐音怎么读_AOS中文社区创始人大豪:零隐链是AOS最恰当的中文表达

    AOS在进入中文市场很长一段时间里,都只是叫AOS,刚开始的时候,用户在中文搜索引擎检索AOS,搜到的信息与AOS公链几乎没有联系.市场很疑惑,BTC叫比特币.ETH叫以太坊.EOS叫柚子,而AOS在 ...

  4. python语言中文社区-python语言中文

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 为了得到一个可以正常返回的 url ,需要修改示例中的 secretid ...

  5. python语言中文社区-python的汉语

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. sdk 3.0 实现了统一化,各个语言版本的 sdk具备使用方法相同.接 ...

  6. python的中文翻译-再聊聊Python中文社区的翻译

    在写<学习Python,怎能不懂点PEP呢?>的时候,我已经发现国内的Python翻译环境不容乐观.这个结论可能不对,毕竟这几年Python大热,或许有不少优秀的翻译项目,只是我还不知道而 ...

  7. TensorFlow中文社区论坛 发布上线!

    TensorFlow中文社区论坛 发布上线! 2018年04月18日 14:29:42 阅读数:351 昨天,TensorFlow与 Caicloud (才云) 联合发起和创建的 TensorFlow ...

  8. ajax数据传送中文乱码,springmvc 发送ajax出现中文乱码的解决方法汇总

    使用spingmvc,在JS里面通过ajax发送请求,并返回json格式的数据,从数据库拿出来是正确的中文格式,展示在页面上就是错误的??,研究了一下,有几种解决办法. 我使用的是sping-web- ...

  9. thinkphp后台_【帮转】PS4中文社区php后台工程师志愿者/实习生招募

    PS4中文社区php后台工程师志愿者/实习生招募 岗位职责: 1.负责PS4港服等应用小程序后台开发 2.公众号和小程序运营系统后台开发工作 3.日常服务器运营维护 4.用户和电商数据分析 岗位要求: ...

最新文章

  1. 一次win10体验旅程
  2. 等待链表_调度(准备运行)链表
  3. 朴素的串模式匹配(C语言实现)【串模式匹配】
  4. 如何成为云原生时代的卓越架构师?
  5. 手动启动oracle服务教程,windows下手动启动oracle服务
  6. F - 娜娜梦游仙境系列——多民族王国
  7. 归并排序的分析与Java实现
  8. 前端学习(83):按显示进行分类
  9. ikbc机械键盘打字出现重复_双十一机械键盘优惠清单,阿米洛/ikbc/吉利鸭/杜咖/美商海盗船/雷神/Filco机械键盘推荐...
  10. 关于java的关键字 transient
  11. GStreamer基础教程01 - Hello World
  12. 安卓 linux arm go,go arm、android版本
  13. Java设计模式之十 ---- 访问者模式和中介者模式
  14. java获取pcm格式音频
  15. 计算机用户名显示TEMP,windows7登陆创建TEMP临时个人配置文件夹解决方法-系统操作与应用 -亦是美网络...
  16. 6.详解第二代蜂窝移动通信系统的典型代表——GSM和通用分组无线业务(GPRS)
  17. 游戏建模师自学3D建模有哪些教材?自学难吗?
  18. Comparable
  19. 冲压模具中的回弹解决办法
  20. nvidia 3d vision kit + opengl + 立体视觉程序开发

热门文章

  1. mysql vim_MySQL的安装配置
  2. 微信小程序-canvas绘制文字实现自动换行
  3. yii表单ajax验证,yii2 modal弹窗之ActiveForm ajax表单异步验证
  4. 用C语言测试程序运行时间,c语言测试程序执行时间
  5. leetcode -day8 Copy List with Random Pointer Single Number I II
  6. delete[] 出错
  7. 第四天2017/03/31(下午2:结构体、数组)
  8. 读阿里许令波老师晋升评审有感
  9. Spring - Java/J2EE Application Framework 应用框架 第 1 章 简介
  10. Java程序员从笨鸟到菜鸟之(二十八)Javascript总结之语言基础