LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

JavaScript能否撑起AJAX的未来

admin
2010年8月18日 21:23 本文热度 3330
初闻AJAX是06年的春天,当时对AJAX的记忆,就是荷兰那只充满的潜力的球队。如今此AJAX就如同彼AJAX一样,令人惊艳,异步更新使得许多桌面软件的效果可以在WEB上实现,AJAX也成为了WEB2.0的主要标志。
       虽然AJAX越来越流行,但是我难免不为其泼点冷水,结合自身的经验我认为目前AJAX开发有以下几个问题,这些问题将可能成为束缚其发展。
       在提出问题之前,我想有必要阐述两个观点:1.异步更新的方向是正确的 2 我的评论只涉及javaScript。
       目前JAVASCRIPT开发面临的最大问题就是依赖浏览器:
(一)   语法及函数依赖浏览器
              以下这段代码大家应该熟悉
               function makeRequest(url) {var http_request = false;if (window.XMLHttpRequest) { // Mozilla, Safari,...http_request = new XMLHttpRequest();if (http_request.overrideMimeType) {http_request.overrideMimeType('text/xml');// See note below about this line}} else if (window.ActiveXObject) { // IEtry {http_request = new ActiveXObject("Msxml2.XMLHTTP");} catch (e) {try {http_request = new ActiveXObject("Microsoft.XMLHTTP");} catch (e) {}}}if (!http_request) {alert('Giving up :( Cannot create an XMLHTTP instance');return false;}http_request.onreadystatechange = function() { alertContents(http_request); };http_request.open('GET', url, true);http_request.send(null);}这只是简单的例子,为了生成一个XMLHttpRequest对象我们要针对不同的浏览器做许多判断。
再举个简单的例子:
在IE中你可以这样访问一个元素document.all.,而如果在FireFox中执行这段脚本一定会报错的。为了保证多浏览器,我们就应该使用共有的函数document.getElementById来获得元素。
以上这种是好的情况,不同浏览器有共有的函数可以使用,但是现实中并非都是如此有时你不可避免的要使用到分支,比如在DOM中动态创建一个RADIO,就可能要这样写:
           try{
var radio = document.createElement("<input type='radio' name='userId' value='"+jsonContent.userInfoList[i].id+"'>");
           }catch(e){
              var radio = document.createElement("input");
              radio.name="userId";
              radio.type="radio";
              radio.value=jsonContent.userInfoList[i].id;  
       }
Try里的代码是为IE准备的,CATCH里的代码是为FIREFOX等准备的。
以上的一些例子说明了,JAVASCRIPT的开发依赖于浏览器。也许有些牛人可以说,我可以用共有的函数,或者有些地方就使用TRY,CATCH。但是我想说的是,JAVASCRIPT身上承担的重量大家都了解,它承载着是WEB2.0的发展。这是一个大问题,因为脚本代码不可能仅由几个牛人来开发,我们需要更多像我这样的新手来开发,这才能推动AJAX的发展。而JAVASCRIPT学习曲线将影响AJAX开发的普及。之所以造成这个问题,就是众浏览器厂商没有制定和遵循统一的标准,仅仅支持JAVASCRIPT但是并不一定支持它的标准。没有统一的标准那么JAVASCRIPT的开发就难于顺利普及,以上个人在开发中遇到的一些情况也只能不断的积累经验。
(二)     调试依赖浏览器
调试是开发中非常重要的一环我想这个大家都没有异议,以前JAVASCRIPT只是做一些特效和校验脚本,但是现在不仅仅是这样,JAVASCRIPT被赋予了更多的功能。面对复杂的业务,使用调试器将大大提高开发效率。但是遗憾的是,JAVASCRIPT的调试器良莠不齐,更严重的是调试器一样依赖浏览器。IE你可以使用Sript Editor,FireFox你也许就要改用Venkman。这意味着什么,意味着你不得不为了多浏览器支持,去学习和熟练更多的工具。
(三)     错误提示依赖浏览器
认为自己的项目开发完成,测试工作结束后不出问题是天真的想法。对于JAVASCRIPT开发而言,尤其天真。(牛人开发的不予讨论)你很难保证你的脚本在客户的某个浏览器上不出现错误,因此错误提示是相当重要的。但是令人遗憾的是,连这种简单的东西都依赖浏览器。IE的在脚本出错时,左下角会有相应的标示,同时提供一些简单的信息(出错发生的行数之类),FireFox在不会有明显的标示,所有信息在错误控制台可以查看,提供的信息和IE差不多。这里不得不提一个浏览器,Sofari它往往只能告诉你脚本出错了,但是并不能告诉你在第几行。如果你的客户有Sofari的强硬要求,同时很不巧它又报脚本出错了。恭喜你,你将坠入地狱。你可能会说把脚本放在其他浏览器上运行,看看什么错。但是很不幸的告诉你的脚本出这些问题时,在其他浏览器上往往是可以完美运行的。这时候你会发现JAVASCRIPT是一个多么恐怖的语言。
有耐心看到这里的读者,似乎会发现我一直提到浏览器。为什么我一直抓着浏览器不放,因为浏览器是将我们的项目展现给用户的工具,在我看来一个项目是否出色,不在于它运用到了什么技术,而取决于用户获得的体验。“客户是我的衣食父母”这是我的口头禅。项目赚钱了,并不因为AJAX,并不因为FLEX,只因为你满足了客户的需求。客户是第一驱动力,一次两次你可以要求客户只使用IE6,但是长此以往不是办法。现在已经不是IE6拥有90%市场的时代了(当然同样的IE6 SP1版和SP2版也有不同,曾经遇到过问题),现在国内用户用的浏览器有:Ie5,Ie6,Ie7,FireFox,MyIe,TT等,你没有理由叫客户换浏览器。而且随着对盗版的打击日渐严厉,Ie7将逐渐取代Ie6。举个简单的例子,客户刚买了个本子,预装了正版的VISTA,他会为了你的程序去装其他的浏览器?如果你的程序不支持IE7显然你失去了这个客户。
现在这个问题还不是非常严重,但是可以预见不久的未来,这些问题将会日益加剧。一个菜鸟能做的就是看到一些问题,如何解决,亦或只是杞人忧天还请牛人指教了。

该文章在 2010/8/18 21:23:01 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved