随着 Ajax盛行,许多网站纷纷采用这项技术,而这股时代趋力的背后,各式各样的Ajax框架可说是最大的功臣,让开发人员不用重造轮子,省去从 JavaScript底层重新开始构造程式的工作。
不过开发人员也许会疑惑,Ajax不就是JavaScript吗?简单的脚本程式还需要框架?事实上,Ajax框架的确能带来许多好处。
简化JavaScript的使用难度
许多开发人员低估JavaScript的难度。过去JavaScript往往被当作是扰人的小玩意,不是弹跳出视窗,就是跑马灯、动态文字等花俏的应用。然而JavaScript独特的物件观念与灵活的语法,赋予它深入操作文件物件模型(DOM)与操控
CSS的强大能力,而能够充分应用浏览器
XMLHttpRequest物件,更打下今日Ajax大片江山。
要全盘掌握这些应用,并没有想像中容易,由于实作的方式充满弹性,只要检视各个框架语法,就可发现它们之间的差异性之大。但现存的各种框架致力于简化JavaScript的应用难度,因此使用Ajax框架,能让开发人员更快专注在开发工作上。
解决烦人的浏览器相容性问题
即使开发人员功力深厚,可以轻松驾驭JavaScript语法,然而一旦遇到琳琅满目的各式浏览器,通常也得败下阵来。
不同浏览器对文件的解析与语法的支援并不一致,在各种作业系统或版本上有时也会表现出不同的行为(例如IE6与IE7的差异),让许多JavaScript应用程式的瓶颈,都发生在相容性上。
使用Ajax框架的好处之一,便是它已经预先为开发人员解决浏览器相容性问题。
开发流程变得更单纯
开发过非同步传输程式经验的人,就一定能体会撰写过程相当烦琐,必须检查回传状态、指定后端应用程式和回呼程式等细节,而这些流程,Ajax框架通常会予以简化,减少开发人员与细节奋斗的时间。
另外,许多Ajax框架都提供了拖曳元件、动画效果、动态选单等,只需指定方法就能使用,节省不少开发力气。
不过Ajax框架实作的方式各不相同,有些JavaScript语法开发,也有的用.NET或Java实作;除了在用户端执行,也有利用伺服器端来实现的方式。我们特别选出十种Ajax框架,让开发人员了解各项Ajax框架的适用性。
1. APS.NET的官方解决方案
ASP.NET AJAX
网址:ajax.asp.net
ASP.NET AJAX是微软.NET平台上的解决方案,提供涵盖伺服器端与用户端所需的AJAX技术与JavaScript整合机制。
透过与下载与安装ASP.NET AJAX到Visual Studio 2005当中,即可利用预设的控制项,开发出一些视觉特效与非同步传输的应用。
另外,ASP.NET AJAX也提供控制项的Toolkit,包含开发人员想自行开发AJAX应用时所需的基底类别与专案范本。
ASP.NET AJAX除了处理浏览器的相容性问题,也让用户端的JavaScript在开发时加入物件导向特性,例如型别系统、资料型别、命名空间、事件等,使得程式码更容易除错、维护与重复使用。
虽然ASP.NET AJAX提供伺服器与用户端的解决方案,透过Visual Studio2005加持,也让开发、除错的难度降低,不过和其他AJAX框架相比,许多AJAX效果和功能都还在测试阶段(在CTP版本中供用户测试),可以应用的功能有限。
2.支援「上一页」与加入「我的最爱」功能
Dojo
网址:dojotoolkit.org
一些轻巧的Ajax框架,用意在解决JavaScript遇到的易用性或特效问题,相较之下,Dojo更像是个面面俱到的JavaScript工具套餐,号称可以降低网页或网页应用程式前端开发速度。
Dojo支援拖拉、淡出、淡入、移动、透明、操作SVG图档等动态效果,它的Widget也让使用者可以轻易使用选单,分页标签(tab)、树状结构、日历、文字编辑器等效果,当然也支援非同步处理的Ajax功能。
另外,Ajax由于以动态的方式操作文件物件,导致使用者习于使用上一页、下一页的功能无法使用,也无法利用像是「我的最爱」的功能,将使用者所需的页面留下正确的书签,但这些需求Dojo都已有解法。
比起其他轻巧型的Ajax框架,要摸熟Dojo显然要下较多的功夫才能掌握,目前文件较少也是个问题。不过由于它的功能更为完整,因此开发人员需要自行加工的地方就相对较少。
3.可由JavaScript呼叫Java语法
DWR(Direct
Web Remoting)
网址:
DWR是设计给Java语言的Ajax框架,让开发人员可以利用JavaScript程式呼叫Java语法。
DWR的运作可分为两个部分,一方面用在浏览器上,处理连接伺服器端Java程式,另一部分则是用来展示回传资料。透过DWR呼叫Java的函式,它会处理连接处理的细节,而当资料被处理完成后,DWR就会执行回呼函式,以进行后续呈现的处理。
在安装DWR时必须编辑Web应用程式的部署描述档案,而且也要编辑DWR特定档案。 DWR配置档案指定了可以远端建立和呼叫的类别。档案中包含伺服器程式码的JAR档案,另外还有JavaScript档案,提供一些辅助函式,处理互动呈现的效果。
DWR最大的好处就在于让Java开发人员可以利用熟悉的语法来处理页面与资料,并且能配合Struts、Tapestry来使用。不过从用户端呼叫远端伺服器的Java程式,仍存在一些安全上的疑虑,在使用时必须注意。
4.以易用性、简化语法为目标
jQuery
网址:jquery.com
jQuery是最近大受瞩目的Ajax框架,它以Prototype为本,简化并提升JavaScript语法的功能。
jQuery有点像是将Prototype所做的事再推向极端,让使用者改变原有撰写JavaScript的方法。它最为人称道的地方,就在于强大的存取页面元素功能,无论是文件的节点、CSS的选取子或Xpath表达式,都能利用「$( )」函式快速存取,并赋予它更多的功能。
此外,它的chainable方法能将一串处理函式结合在一起,让程式码更为简洁。另外jQuery也提供一些动态效果,不过和其他框架相比,这部分就显得阳春许多。
jQuery的优劣其实都在同一件事情上,一方面它简化JavaScript的语法,让撰写程式更为简便,就好用的目的而言,的确是相当成功。然而这却让JavaScript的程式码会发展成另一种样子,对于初学者而言,一开始学习时,必须要花点时间去适应。
5.依功能需求,下载模组化工具
MooTools
网址:mootools.net
前身是以轻巧著称的Moo.fx,与Prototype有着相似的概念和语法,但在物件导向上做得更为彻底,而且在动画效果和互动行为上,提供更多的功能与应用,能让使用者更快的写出物件导向概念的JavaScript语法。
MooTools的下载档依模组分为核心、类别、原生语法、网页元素、浏览器视窗、动画效果、拖曳、远端传输与外挂程式,除了核心程式是必要下载之外,其他可依使用者需求,下载所需的JavaScript档案,借此减少档案的体积。
虽然MooTools将JavaScirpt物件导向化的结果做得更彻底,有利于程式的扩展与维护,不过也挑战原先熟悉JavaScript物件观的人,需要较多的时间适应。
不过无论是网站本身呈现、程式语法展示,甚至是模组下载介面,MooTools都展现相当精致的动态效果,参与网站的示范,很快就能实作。
6.大大扩充JavaScript基本功能
Prototype
网址:prototype.conio.net
Prototype不像其他框架,有许多炫人耳目的动态效果,而是专注在改良JavaScript本身的功能,让JavaScript更容易使用,也更具物件导向风格。