Ajax在应用程序框架中有一席之地么?
【IT168 专稿】“Ajax技术在哪里?”,人们谈到Zend框架的时候,经常会问及这一个问题。我认为这是人的一种天性:大多数人对项目的一些基本东西并不会过多关注,例如MVC设计模式的实现,以Lucene为核心的搜索引擎,缓存组件等。他们想要的是更吸引人的闪亮的东西,他们想要Ajax。而且他们不想花大力气来了解它。
在过去的十个月里,各种应用程序框架纷纷创建了自己的Ajax组件,都开始宣称自己兼容Web 2.0了。它们之所以这样做,是因为它们没有考虑自己是否应该这样做,而只是关心了它们有没有能力这样做。毫无疑问,这种做法将导致一些问题的发生。
在我自己的应用程序中,为了决定是否应用一个改变,我通常如此考虑。首先,这种改变是必要的么?假若是,选择是很明显的;假若不是,我继续问自己以下问题。这种改变会带来某种好处么?它将对现有的应用程序造成什么伤害么?诸如此类,等等,以此来确定应用这一改变是否是一个正确的选择。
自然,这些通用的问题也适合于来检验我们今天讨论的话题,下面让我们依次来确认一下这些问题。
首先,采用Ajax是必要的么?应用程序框架通常被设计成服务器端编程。除了通过GET、POST或其他方法来请求一个指定网址,或者对结果进行解释外,Ajax与服务器还有另外的交互内容么?没有;这个过程与一个标准的Web请求完全相同。因此从服务器的角度出发,Ajax并没有做什么新鲜的事。因此采用Ajax不是一种必须的选择。
其次,采用Ajax是有益的么?大多数Ajax组件包装了JavaScript库,像Script.aculo.us或Dojo等,甚至它使用了和JavaScript同样的方法名称。对于那些基本了解Javascipt的人来说,使用Ajax内的JavaScript库节省了大量时间,不过事实真如此么?对于那些不了解JavaScript的人来说,不明白一项技术的工作原理就把它嵌入到应用程序中,这种做法明智么?笔者看来,最好还是花上几天的时间来了解一下JavaScript和XMLHttpRequest背后的原理,然后选择一个最能满足你的需要和编程风格的JavaScript库。
当你只能直接写JavaScript代码的时候,为什么不选择使用Wicket框架用Java语言编写更多的程序代码呢?
据我所知,这些组件中的大多数之所以存在,是因为开发者可以藏在使用它们喜爱的语言编织成的“茧”中,从而感到非常舒服,而不用冒风险去尝试另一种语言。这在Java开发者中是一个普遍存在的态度,正如Google Web工具集所展示的那样。尽管它有一些好处,但是坦白来讲,使用它的真正理由就是不用写一行JavaScript代码。JavaScript如此差劲么?以致于要使用另一种语言来编译它才是更好的选择?尤其是现在还存在像Firebug这样优秀的编译器。
注:Firebug是firefox下的一个巨好的插件,Web开发工程师一定会深深喜欢这个插件的。
就目前来说,它有一下几个优点:方便的查看页面的源代码,绝对比你“右键点击页面->查看源代码”要有效率;
查看页面某一区块的样式表,比如说你可以看看某一块页面上的背景图在样式表中是如何定义的,Web开发的老手一定会了解这个操作在手工进行的时候是多么麻烦;
调试JavaScript
它是有害的么?现代Web开发的最基本的原则之一是表示层和逻辑层的分开,但是Ajax组件常常忽视了这个概念。尽管某些实现涉及到在控制器内的整个表单的创建,让我们假定看一个更智能的设计,像查看帮助(view helper)。
即使对于一个查看帮助的实现,你也将突然面临一个问题:除非代码在运行(类似于“编译”那一步)之前已经被准备好,你现在极有可能混合了JavaScript事件处理到你的HTML中了。有的人可能不会意识到这是一个问题。但是,正如服务器端的逻辑应该和视图(对于一个多层结构而言)分开一样,格式也应该与内容分开(例如CSS),程序动作在表示层中没有相应展现的地方。也就是说,JavaScript属于一个单独的包含文件。也就是我们通常称之为“无侵入性(unobtrusive)JavaScript”。
还有,Ajax组件在实际使用过程中还会阻挡那些不支持JavaScript的用户使用应用程序,这其中包括使用屏幕阅读软件的用户,还有大多数使用移动浏览器的用户等,对于一个公众站点来说,这部分用户加起来有5%左右。假若框架会产生不可访问的代码,这毫无疑问是个失败的框架。
结论
很明显,对我来说,假若程序代码不是在运行时之前就准备好,Ajax组件并没有带来实际的价值。即使是,带来的价值也非常有限。框架开发者应该让JavaScript库开发者来处理Ajax简化问题和专注于其他事情,而不是创建Ajax组件。JavaScript非常好而且它有自己的位置,但是不是在应用程序框架中。
尽管作者对Ajax在应用框架的位置的看法有些极端,或者说是偏激,不过也从一定程度上让我们看到,对于新的技术或者旧技术的新应用,我们要保持一个清醒客观的头脑,不能盲目的不加分析的开始投入其中,要看看自己的实际需求,再来决定是否采用该新技术。
0
相关文章