传统网络程序的开发是基于页面和服务器之间的数据传输模式,网络程序的表示层建立在HTML页面上。虽然超文本标记语言适用于文本,但传统的基于页面的系统已经逐渐不能满足网络浏览器更高、更全面的体验要求。这就是Macromedia所说的“体验问题”,富互联网应用程序(简称RIA)的出现也是为了解决这个问题。Ajax(异步JavaScript和XML)是RIA的解决方案之一,近年来发展迅速。Flapjax旨在满足现代基于客户端的网络应用程序的需求。与传统的JavaScript相比,Flapjax提供了一种更简单的方式来编写Ajax程序。应用程序开发人员可以将更多的精力投入到表示层的工作中。Ajax技术2.1 Ajax定义严格来说,Ajax不是一种技术。它是几种新兴技术以新的强大方式的结合。它使浏览器能够为用户提供更自然的浏览体验。在Ajax之前,网站强迫用户提交/等待/重新显示样本,用户的动作总是与服务器的“思考时间”同步Ajax提供了与服务器异步通信的能力,从而将用户从请求/响应周期中解放出来。使用Ajax,当用户单击一个按钮时,JavaScript和DHTML可以用来立即更新用户界面,并向服务器发送异步请求,以执行更新或查询数据库。当请求返回时,可以使用JavaScript和CSS相应地更新用户界面,而不是刷新整个页面。最重要的是,用户甚至不知道浏览器正在与服务器通信:网站似乎有反应。尽管Ajax所需的基础设施已经存在了一段时间,但是直到最近异步请求的真正威力才被利用。能够拥有一个响应速度极快的网站真是令人兴奋,因为它最终允许开发人员和设计人员使用标准的HTML/CSS/JavaScript堆栈来创建“类似桌面”的可用性。2.2现状和需要解决的问题传统的网络应用程序使用同步交互过程。在这种情况下,用户首先触发对HTTP服务器的操作或请求。反过来,服务器执行某些任务,并向发出请求的用户返回一个HTML页面。这是一种不连贯的用户体验。当服务器处理请求时,用户大部分时间都在等待,屏幕内容是空白的。自从超文本被用于网络传输和展示以来,我们都采用了这样一套传输方法。当负载相对较小时,这并不反映什么是错的。但是,当负载相对较大且响应时间很长时,1分钟、2分钟.几分钟,这种等待是无法忍受的。说真的,如果超过了响应时间,服务器只会告诉你页面不可用。此外,有时我只想更改页面上的一小部分数据,那么为什么我必须重新加载整个页面呢?在软件设计变得越来越人性化的时候,如此糟糕的用户体验完全违背了这个原则。为什么用户总是要等待服务器获取数据?至少,我们应该减少用户的等待时间。现在,除了编程、编码优化和服务器调优,还可以使用AJAX。2.3为什么AJAX不同于传统的Web应用程序,AJAX使用异步交互过程。AJAX在用户和服务器之间引入了中间媒介,从而消除了网络交互过程中处理-等待-处理-等待的缺点。用户的浏览器在执行任务时加载AJAX引擎。AJAX引擎是用JavaScript编写的,通常隐藏在一个隐藏的框架中。它编译用户界面并与服务器交互。AJAX引擎允许用户和应用软件之间的交互过程异步进行,与用户和网络服务器之间的通信无关。现在,JavaScript可以用来调用AJAX引擎,而不是生成一个HTTP用户动作。内存中的数据编辑、页面导航和数据验证不需要重新加载整个页面,可以由AJAX执行。使用AJAX可以给ISP、开发者和最终用户带来明显的便利:减轻服务器的负担。AJAX的原则是“按需获取数据”,这可以最大限度地减少冗余请求,并对服务器的负担做出响应。无需刷新更新页面,减少用户心理和实际等待时间。特别是,当读取大量数据时,AJAX不需要像Reload这样的白屏。Ajax使用XMLHTTP对象来发送请求和获取服务器响应,而JavaScript则用于操作DOM来实现 因此,在读取数据的过程中,用户不是面对白屏,而是面对原始页面内容(也可以添加加载提示框,让用户知道用户正在读取数据)。只有在收到数据后,才能更新相应部分的内容。这种更新是即时的,用户几乎察觉不到。从而给用户带来更好的体验。

它可以将一些服务器的负担转移到客户端,并使用客户端的空闲容量来处理它,从而减轻服务器和带宽的负担,节省空间和宽带租赁成本。可以调用外部数据。基于标准化和广泛支持的技术,不需要下载插件或小程序。进一步促进页面显示和数据的分离。3 Flapjax语言3.1 Flapjax是一种语言Flapjax的作者及其主页都强调Flapjax是一种语言。它的语法与JavaScript完全相同,第一个实现在下面提到的几个方面与JavaScript相关,但是它的创建者关心编程语言理论。他们将Flapjax分类为“功能反应”语言,它支持功能编程以及声明性和命令性编程。因此,除了Ajax开发人员,Flapjax也吸引了语言研究者的兴趣。Flapjax主要帮助您定义和表达“响应”——,即输入(如用户鼠标移动和选择)和输出(如浏览器窗口中的视图)之间的关系。同时,Flapjax与现有的JavaScript兼容。它依赖于已经被JavaScript使用的DHTML和CSS(层叠样式表),并且目前没有添加新的可见元素。从这个角度来看,煎饼纯粹是算法,没有添加任何“可见的”——。它只会让你已经知道的组件更容易编写。3.2 Flapjax实现持久性Flapjax不仅改进了传统Ajax的表达方式,还实现了一些Ajax程序通常无法实现的功能。更重要的一项是服务器端持久性,这在协作应用程序中非常重要。Flapjax简化了从浏览器(web客户端)获取信息并将其存储回服务器的过程。数据存储在服务器端后,任何客户端都可以使用这些数据。这允许一个团队一起工作在一个文档——上。文档的文本只是一个持久的Flapjax变量。这意味着Flapjax是一个模型-视图-控制器(MVC)实现,应用程序开发人员可以轻松掌握!MVC通常需要在控制器中仔细编写正确的逻辑,但是Flapjax“免费”提供控制器逻辑(见官方教程)。应用程序开发人员可以在表示层的设计上投入更多的精力。服务器端持久性需要web服务器配置。有关服务器配置的详细信息,请参考Flapjax官方网站(www)上的介绍。Flapjax-lang.org)。3.3 Flapjax应用示例我们使用Flapjax实现了一个简单的数字时钟(time1.fj)。如图1所示,这是Flapjax的在线编译器。在左侧的文本区域输入程序源代码,以确保您的浏览器支持JavaScript。按编译并运行。您看到的不仅是当前系统时间,而且时间还在快速增加(以毫秒计)。