探索AJAX运行时产品
本文通过比对一些可比较的特征来尝试分类整理这些框架。希望读者阅读后能了解一些用来细分Ajax产品集合的工具,以便更轻松地理解其间的差异、缩减需要查看的子集数,并制订出更明智的选择。
综合框架与独立组件的对比
Ajax运行时组件产品能运行广泛的内容,从在Web上发现且可剪切并粘贴到您自己的应用程序中的代码片断到综合性的框架。在代码片段的水平之上即为单独的JavaScript组件,这些组件表示针对具体用途的API。这些表示UI小部件中的一些(比如Dojo Button)会出现在Web页面上,另外一些则是用来解决较低层面、与管道技术相关的问题,比如与服务器通信或操纵浏览器DOM的问题(比如原型API)
综合框架就是这些封装对象的一个集合,它意在成为某个Ajax开发项目的完整解决方案。许多项目都假设它们“拥有”运行Ajax的页面——实际上,它们往往不能很容易地接受与外部资源组件共享页面的观点。
沿着这条轴线进行选择通常与应用程序的使用年限有关。对于新应用程序来说,应对综合包作出的假设一般较为轻松。而要对已有Web应用程序作出增量式改进,集成代码片断或对象通常(尽管不总是)更为简单。由于在较低的层次上操作,代码片断或独立组件可能需要更多的编程。综合框架作出的假设使它们更难彼此集成,也更难在门户中使用(因为有时它们的假设与门户容器的假设冲突)。
声明式与过程式的对比
声明式与过程式的区别体现在框架所提供用于制作Web页面的编程模型中。声明式旨在提供一种使开发人员可以描述页面上的UI布局及其关系的语言,这使得框架仅通过应用程序开发人员提供的描述即可知道如何处理在UI小部件间传递的事件。过程式框架提供了编程语言API,程序员提供处理UI事件的过程式代码。
在下面的示例1中,可以看到通过ICESoft框架完成的一个数据表的描述式布局的开始部分。所展示的列是动态数据和命令链接的显示,用于两者的数据绑定将检索数据,并将命令传递给引用JSF backing bean的服务器,它是在JSF表达式语言中指定的。
| <ice:datatable> <ice:column> <ice:commandLink actionListener="#{catalog.selectBook}"> <ice:outputText value="#{book.title}" /> </ice:commandLink> </ice:column> |
示例1.声明式布局和事件处理 ICEFaces
在示例2中,我使用了Dojo这种更倾向于过程式的框架来处理JavaScript中的按钮事件,并且指定另外一个JavaScript函数onServerResponse(),在我请求的服务器数据抵达时,此函数将被调用。
| <script> function helloPressed() { dojo.io.bind({ url: 'response.txt', handler: onServerResponse });} ... </script> <button dojoType="Button2" widgetId="helloButton"> Hello World! </button> |
示例2.过程式事件处理:Dojo
- 本文关键词:

