基于瀏覽器的應用框架一般分為兩種:

  • Aplication frameworks:提供了瀏覽器功能,但其最著名的還是在于通過窗口生成組件建立桌面GUI。
  • Infrastructural frameworks:提供基本的框架功能和輕便式瀏覽器端操作,讓開發(fā)者去創(chuàng)建具體應用,主要功能包括:
    • 基于XMLHttpRequest組件的瀏覽器交互功能
    • XML解析和操作功能
    • 根據XMLHttpRequest的返回信息進行相應的DOM操作
    • 一些特殊情況下,和其他的瀏覽器端技術如Flash(或Java Applets)等集合到一起應用

基于服務器端的應用框架通常以下面兩種方式工作(盡管它們根據不同的語言進行了分類)

  • HTML/JS Generation(HTML/JS生成):通過服務器端生成HTML和JS代碼在傳遞給瀏覽器端進行直接運行
  • 遠程交互:JavaScript調用服務器端函數(例如調用Java函數)并返回給JavaScript的回調句柄,或者請求服務器端數據信息,例如Session信息,數據庫查詢等。

目錄

1.1 Bindows
1.2 BackBase
1.3 DOJO
1.4 Open Rico
1.5 qooxdoo
1.6 Tibet
1.7 AJFORM
2.1 AjaxCaller
2.2 Flash JavaScript Integration Kit
2.3 Google AJAXSLT
2.4 HTMLHttpRequest
2.5 Interactive Website Framework
2.6 LibXMLHttpRequest
2.7 MAJAX
2.8 RSLite
2.9 Sack
2.10 Sarissa
2.11 XHConn
3.1 Cross-Platform Asynchronous INterface Toolkit
3.2 SAJAX
3.3 Javascipt Object Notation (JSON) and JSON-RPC
3.4 Javascript Remote Scripting (JSRS)
3.5 Bitkraft for ASP.NET
4.1 WebORB for Java
4.2 Echo 2
4.3 Direct Web Remoting (DWR)
4.4 SWATO
4.5 AJAX JSP Tag Library
4.6 AJAX Java Server Faces Framework
5.1 CL-Ajax
6.1 WebORB for .NET
6.2 Ajax.NET
6.3 ComfortASP.NET
6.4 AjaxAspects
7.1 AjaxAC
7.2 JPSpan
7.3 XAJAX
8.1 Ruby On Rails

?

1. Pure Javascript: Application Frameworks

1.1 Bindows (成立于2003年)

Bindows 是一個通過DHTML、JavaScript、CSS和HTML等技術強勁聯(lián)合起來的一套完整的Windows桌面式的WEB應用程序解決方案。Bindows無需下載安裝客戶端支撐組件(如Java、ActiveX或Flash),僅需一個瀏覽器。純OO的理念體現在Bindows任何地方,Bindows或許是筆者見過的最完整最強大的AJAX應用程序平臺。
Bindows是商業(yè)程序的,使用了來自于MB的技術(總部位于GA USA,主要開發(fā)中心在瑞典,成立于2002年)。

Bindows框架提供的功能和特性有:

  • 基于面相對象技術的類和API
  • 一套完整的Windows桌面系統(tǒng),支持各種特性窗口模式,包括菜單、表單、表格、滑動條、測量儀器窗口和其他一些Windows窗口特性支持。
  • 是開發(fā)zero-footprint(零空間占用)SOA客戶端應用程序首選工具包
  • 本機的XML,SOAP和XML-RPC支持
  • 單用戶到企業(yè)級開發(fā)的支持
  • 內建的完美的AJAX支持

Bindows開發(fā)環(huán)境:

  • 支持企業(yè)級規(guī)模的項目開發(fā)
  • 跨瀏覽器、跨OS平臺的支持
  • 不受服務器結構限制
  • 良好的與新的、現有的資源互操作性
  • 統(tǒng)一的開發(fā)接口

?

1.2 BackBase (成立于2003年)

BackBase 是一個完整的瀏覽器端框架,提供了豐富的瀏覽器操作功能,以及對.NET和JAVA平臺的集成。
商業(yè)化產品,來自于Backbase B.V(總部在Amsterdam,成立于2003年)。

?

1.3 DOJO (開發(fā)中,成立于2004年9月)

DOJO提供完整的輕量級窗口組件和瀏覽器-服務器消息映射支持

  • 提供創(chuàng)建自定義Javascript窗口組件的框架支持
  • 預制的豐富的窗口類型庫
  • B/S消息映射支持——XMLHttpRequest和其他機制
  • 支持瀏覽器中的URL操縱功能
  • 開源許可(Academic Free License 2.1),由JotSpotAlex Russell所領導。

1.4 Open Rico (開發(fā)中;成立于2005年5月;基于早期的一個proprietary 框架)

Open Rico 是一個支持Ajax架構和用戶交互的多用途框架。

  • 一個XMLHttpRequest response能被一個或多個的DOM對象,或者Javascript對象調用。
  • 支持拖拽操作
  • 支持基于AJAX的動畫模式,如縮放和變換等
  • 基于Behaviors的操作庫
  • 使用指南 ,由RussMirimar的Yonah提供
  • 開源。源于Sabre航空公司解決方案,由Bill Scott,Darren James及另外一些人維護。

?

1.5 qooxdoo (開發(fā)中; 成立于2005年5月)

qooxdoo ,是另一個發(fā)展迅猛的應用框架,提供廣泛的UI支持,正在開發(fā)基礎架構等特性。

  • 基礎結構特性:
    • 能輕易的捕獲和操縱DOM事件
    • 支持調試
    • 支持一個時間操作的Timer類
    • Getter/Setter支持
  • UI:
    • 窗口組件庫和框架
    • 界面布局管理
    • 圖像緩存和透明PNG圖片處理
  • 開源(LGPL).

1.6 Tibet (開發(fā)中; 創(chuàng)建于2005年6月)

Tibet 提供了大量的易移植和完整的JavaScript API,通過這些可以快速生成大量的客戶端代碼,Tibet自稱是企業(yè)級AJAX。

  • 遠程腳本調用封裝在XMLHttpRequest中
  • URI支持
  • 支持所有的HTTP事件,不再僅僅是GET和POST
  • 低級的協(xié)議-File://和WebDav也可以當作HTTP正常使用
  • Web Services調用支持,包括SOAP、XML-RPC等等
  • 大型的Javascript對象庫
  • 多種多樣的XML操作支持
  • IDE和開發(fā)工具
  • 開源協(xié)議(OSI)

1.7 AJFORM (創(chuàng)建于2005年6月)

AJFORM 是一個極易上手的AJAX框架,被用來編寫入門級的AJAX代碼,提供有以下功能:

  • 三步安裝
  • 自動支持任意HTML表單元素
  • 幾乎無需編碼即可實現AJAX

2 Pure Javascript: Infrastructural Frameworks

2.1 AjaxCaller(創(chuàng)建于2005年5月,目前是Alpha版)

AjaxCaller 是一個具有多線程安全訪問的XMLHttpRequest組件,主要針對Ajax開發(fā)新手,目前仍處于alpha開發(fā)階段,僅在AjaxPatterns的在線搜索范例中使用了這個程序。

  • 用明文或者XML結構的數據實現和服務器的交互(GET/POST/PUT/DELETE)
  • 支持XMLHttRequest對象的構析(銷毀對象,C++支持內存對象的構析操作)
  • 支持Response的高速緩存(尚在計劃中)
  • 簡單的庫文件代碼易于新手學習使用,并且支持腳本調試
  • 開源協(xié)議

2.2 Flash JavaScript Integration Kit

The Flash JavaScript Integration Kit 可以使Flash和Javascript腳本實現相互集成。

  • 可以實現在JavaScript中調用Flash ActionScript腳本,反之亦然。
  • 幾乎支持雙方主要數據類型的在不同環(huán)境中的傳遞調用。
  • 開源協(xié)議,有幾個Flash開源愛好者維護。

2.3 Google AJAXSLT (2005年6月發(fā)行)

Google AJAXSLT ,是一個Javascript框架,用來執(zhí)行XSLT轉換以及XPath查詢。

  • 目前在Google Map上就使用了這個。
  • 開源協(xié)議(BSD)

2.4 HTMLHttpRequest(Beta版;創(chuàng)建于2005年)

HtmlHttpRequest 最大的特點就是運用XMLHttpRequest對象和標準HTML標簽IFrame來實現最大限度的跨瀏覽跨平臺的AJAX支持,其原理是在支持XMLHttpRequest的瀏覽器上調用XMLHttp,如果不支持,就用IFrame來模擬實現異步交互。

  • 目前支持的瀏覽器:IE6/Win, IE5.5/Win, IE5/Win, IE4/Win, Mozilla/Win, Opera7/Win, Safari/Mac, IE5/Mac
  • 尚未測試的瀏覽器:IE4/Mac, Mozilla/Mac, Opera/Other, Konqueror/Linux。
  • 開源協(xié)議(LGPL)

2.5 Interactive Website Framework (創(chuàng)建于2005年)

Interactive Website Framework 定位在瀏覽器中支持各種各樣的AJAX基礎應用的開源項目。自稱是通過JavaScript、CSS、XML和HTML實現高性能的交互式WEB框架,包括一個可定制易讀的XML解析器。實際上,IWF是一個AJAX的基礎框架,并且還包括一些通用腳本代碼。

  • 實現了線程安全的XMLHttpRequest
  • 對XML Document進行封裝,以便創(chuàng)建更具有可讀性的代碼:
    var node = doc.groceries.frozen[0].pizza[0].size;
    封裝后的數據讀取
    var node = doc.documentElement.firstChild.firstChild.getAttribute("size");
    原始的DOM操作讀取
  • 開源協(xié)議

2.6 LibXMLHttpRequest (2003年6月發(fā)布)

libXmlRequest 是一個小型XMLHttpRequest封裝包

  • 用getXML()和postXML()兩個事件簡化XMLHttpReuqest調用
  • 支持XMLHttpRequest對象池
  • Response緩存處理
  • 源碼可以使用,但是有版權保護。

2.7 MAJAX

MAJAX 是另一個非常小巧的HttpRequest封裝包,為收發(fā)字符型信息提供簡單接口,并為每步動作設置回調界面。

2.8 RSLite (x)

RSLite 是一個XMLHttpRequest封裝組件,作為Brent Ashley的JSRS(JavaScript Remote Scripting)其中的一部分功能單獨發(fā)布。詳情可以看JSRS的介紹

2.9 Sack(開發(fā)中,成立于2005年5月)

Sack 也是一個很有名字的微型XMLHttpRequest封裝包。調用者可以自定義回調函數或者是DOM對象。借助于回調DOM對象,可以把Response回來的數據直接以文本的方式嵌入DOM中。

2.10 Sarissa (發(fā)布于2003年2月)

Sarissa 是一個JavaScript API,封裝了在瀏覽器端獨立調用XML的功能。

  • 可移植的XMLHttpRequest對象創(chuàng)造
  • 可移植的XPath查詢
  • 可移植的DOM操控
  • 可移植的XSLT
  • 可移植的XML序列化
  • 開源協(xié)議(GPL2.0和LGPL2.1)

2.11 XHConn (2005年4月發(fā)布)

XHConn 也是一個小型的XMLHttpRequest封裝庫。筆者也使用改良過的XHConn,其特點就是調用簡單,代碼也清晰易讀。

  • 例子:
    new XHConn().connect("mypage.php","POST","foo=bar&baz=qux",fnWhenDone);
  • 開源協(xié)議許可

3 Server-Side: Multi-Language

3.1 Cross-Platform Asynchronous INterface Toolkit (2005年5月)

CPAINT 是一個真正的同時支持PHP和ASP/VBScript腳本的AJAX和JSRS工具包。CPAINT在后臺提供你需求的AJAX和JSRS代碼,并自動返回到瀏覽器端相應的Javascript腳本代碼,這種方式易于實時反饋需求的WEB應用程序。

  • 支持PHP和ASP
  • 所有功能函數都在統(tǒng)一的JavaScript文件中
  • 支持遠程腳本和XML
  • 支持本地和遠程函數調用
  • 可以創(chuàng)建單個或多個XMLHttp對象
  • 返回給后臺的數據即可以是文本也可以是XML/DOM文檔對象
  • 支持POST和GET
  • 用服務端代理的方式實現遠程函數和數據的訪問操作
  • 大部分瀏覽器中測試正常使用
  • 在GNU、GPL、LGPL開源協(xié)議保護下發(fā)行

3.2 SAJAX (2005年3月)

SAJAX 的實現方式很獨特,例如:調用一個javascript方法x_calculateBudget(),將先把響應傳到服務器并調用一個Java calculateBudget()方法,然后以javascript方式把值返回到x_calculateBudget_cb()中。SAJAX的名氣不錯,估計很多人都聽過甚至用過,不過缺點就是它的這套映射理論感覺較繁鎖,遠不如一些輕量級的封裝庫好用,不過SAJAX最大的特點就是支持的平臺豐富,幾乎囊括了WEB下常用的編程語言和平臺

  • 很方便從JavaScript函數映射到服務端代理操作
  • 支持多種平臺(ASP/ColdFusion/Io/Lua/Perl/PHP/Python/Ruby)
  • 開源協(xié)議

3.3 Javascipt Object Notation (JSON) and JSON-RPC

JSON 是一個"face-free" XML,而JSON-RPC是一種遠程交互協(xié)議,類似于XML-RPC,對JavaScript支持較強

3.4 JavaScript Remote Scripting(JSRS)(2000年)

JSRS ,較經典的遠程腳本訪問組件,支持將客戶端數據通過服務器做代理進行遠程的數據/操作交互。

  • 支持的瀏覽器:IE4+,NS4.x,NS6.x,Mozilla,Opera7和Galeon。
  • 服務器端腳本語言支持:ASP,ColdFusion,PerlCGI,PHP,Python和JSP(servlet)。
  • 開源協(xié)議。由Brent Ashley提供支持。

3.5 Bitkraft for ASP.NET

Bitkraft 是個基于(.NET)Web框架的CLR(公共語言運行庫),允許用獨特的方式創(chuàng)建和操作分布式Web內容。用C#編寫,運行在微軟的.NET 1.1和Mono框架下,無縫式的客戶端-服務器響應方式是它的最大特點。Bitkraft沒有使用XML組織數據,而是用JSON代替。

  • 支持的瀏覽器: IE5+, Firefox1+, NS6
  • 服務器端要求:ASP.NET, Mono XSP, Cassini, Apache (modMono) .NET Framework 1.1+
  • 事件驅動
  • 支持同步和異步的遠程代理
  • 客戶端支持所有的.NET類型或自定義類對象映射到JSON中
  • 用JSON取代XML
  • 免費,開源許可協(xié)議

4 Server-Side: Java

4.1 WebORB for Java (2005年8月)

WebORB for Java 是一個開發(fā)AJAX和基于Flash的富客戶端應用程序的開發(fā)平臺。在線例子

  • WebORB包括一個富客戶端開發(fā)類庫。提供簡單的在線式API用來綁定或者調用任何Java對象、XML Web Services和EJB
  • 支持異步或同步的事件驅動
  • 不需要在服務端修改任何代碼,不需要自定義方法或屬性、變量等。不要求設計時指定代理等。
  • 同步調用不需要回調,異步調用需要一個回調方法。
  • 客戶端可以向服務端請求指定的活動方式,不需要任何編程就可以把處理結果輕易的轉變?yōu)闋顟B(tài)。
  • 提供一個特定API來處理數據庫查詢結果-服務器代碼能返回DataSet或者DataTable,而客戶端以一個類似于RecordSet的JavaScript對象來顯示這個結果。該對象提供檢索列名和行數據的方法。
  • 支持數據分頁技術。客戶應用程序能檢索頁面中的數據。
  • 支持以參數的方式返回所有服務期端數據類型,如primitives, strings, complex types, arrays, native .net collections, remote references
  • 目前有兩個版本:標準版(免費),專業(yè)版(商業(yè)許可)

4.2 Echo 2 (2005年3月)

Echo 2 允許你用純Java語言編寫AJAX程序。 Demo.

  • 自動生成HTML和Javascript代碼
  • 用XML在客戶端-服務端傳遞消息
  • 如果愿意支持自定義Javascript組件
  • 開源協(xié)議(Mozilla Public License or GNU LGPL)

4.3 Direct Web Remoting (DWR) (2005)

Direct Web Remoting 可以在Javascript代碼中直接調用Java方法的應用框架

  • 類似于SAJAX,可以把Javascript中的請求調用轉遞到Java方法中并將執(zhí)行結果返回給Javascript
  • 可以和任何Web框架一起使用,如Struts、Tapestry等等
  • 開源(Apache),目前該產品被加入到WebWork

4.4 SWATO (2005)

SWATO 是一套可重用的和良好集成的Java/JavaScript庫,它實現了一種更容易的方式來改變你的web應用程序的交互,通過AJAX方式實現。

  • 服務端Java庫可以非常容易的部署到所有Servlet2.3+兼容的容器中
  • 客戶端Javascript庫可以在所有支持XMLHttpRequest的瀏覽器中使用
  • 使用JSON技術在服務端組織POJO數據,這樣你可以在任何Javascript環(huán)境中(HTML、XUL、SVG)訪問這些遠程數據,這種方式很容易通過硬編碼或者某種成熟的Javascript庫集成到當前應用中
  • 提供一個簡單接口使你能在Javascript中調用遠程的POJO數據
  • 使用<servlet>和<filter>靈活的在web.xml中進行配置,并且可以集成(不是必須)到你的Spring框架中
  • 提供了幾個可幫助你快速開發(fā)web應用程序的組件(如自動完成的文本框,在線表單,在線列表等等)

4.5 AJAX JSP Tag Library

The AJAX JSP Tag Library 是一組JSP標簽庫,用來AJAX程序開發(fā)。可以在J2EE下無需Javascript就能輕松開發(fā)AJAX模式的Web Form。標簽庫為比較通用的AJAX功能提供了5個標簽:

  • autocomplete: 用戶在文本框中輸入字符,自動從指定的數據中匹配用戶輸入的字符,類似于Google Suggest
  • callout:可以為A標簽加入氣泡式的消息提示框,不過是實時的服務端取出數據
  • Select/dropdown:類似于聯(lián)動菜單,比如地州市的聯(lián)動下拉框
  • toggle:開關閘按鈕,比如在一個hidden表單域中存儲true和falsh,同時顯示相應的img圖像
  • update field:更新數據,也就是無刷新提交了。

4.6 AJAX Java Server Faces Framework

The AJAX-JSF 用來把任意的JSF應用程序轉變?yōu)锳JAX應用程序

  • 例子 :AJAX組件的 MyFaces JSF Tree(樹型目錄), table scroller(可滾動的表格), tabbed pane(分頁欄)
  • 開源協(xié)議(Apache Software License)

Server-Side: Lisp

5.1 CL-Ajax

CL-Ajax 實現Javascript直接調用服務端Lisp

  • 生成可帶參數的函數
  • 可以回調Javascript函數或者DOM對象
  • 可以集成到SAJAX中
  • 開源許可

6 Server-Side: .NET

6.1 WebORB for .NET (2005年8月)

WebORB for .NET 是一個用.NET和XML Web Services方式開發(fā)AJAX和基于Flash的富客戶端應用程序(在線例子)

  • WebORB包括一個富客戶端開發(fā)類庫。提供簡單的在線式API用來綁定或者調用任何.NET對象、XML Web Services
  • 支持異步或同步的事件驅動
  • 不需要在服務端修改任何代碼,不需要自定義方法或屬性、變量等。不要求設計時指定代理等。
  • 同步調用不需要回調,異步調用需要一個回調方法。
  • 客戶端可以向服務端請求指定的活動方式,不需要任何編程就可以把處理結果輕易的轉變?yōu)闋顟B(tài)。
  • 提供一個特定API來處理數據庫查詢結果-服務器代碼能返回DataSet或者DataTable,而客戶端以一個類似于RecordSet的JavaScript對象來顯示這個結果。該對象提供檢索列名和行數據的方法。
  • 支持數據分頁技術。客戶應用程序能檢索頁面中的數據。
  • 支持以參數的方式返回所有服務期端數據類型,如primitives, strings, complex types, arrays, native .net collections, remote references
  • 目前有兩個版本:標準版(免費),專業(yè)版(商業(yè)許可)

6.2 Ajax.NET (2005年3月)

Ajax.NET 是首家支持各種方式通過Javascript訪問服務端.net的免費庫

  • 類似于SAJAX,能把Javascript請求發(fā)送到.NET方法,服務端回傳給Javascript,甚至包括串行化自定義類。
  • 可以在Javascript中訪問Session和Application數據
  • 緩存查詢結果
  • 免費使用源代碼
  • 無需更改源代碼,允許給Ajax.NET添加和修改方法和屬性
  • 所有類支持Javascript客戶端返回數據,可以在JavaScript中使用DataSet:res.Tables[0].Rows
  • 使用HtmlControls組件訪問和返回數據
  • 頁面無需重載,用事件代理(數據訪問層)
  • 因為只提供一個調用接口方法,所以服務端CPU占用非常少

6.3 ComfortASP.NET (2005年8月)

ComfortASP.NET 可以讓開發(fā)者在純.NET下開發(fā)類似AJAX(DHTML,JavaScript,XMLHttp)特性的應用程序。

  • 快速應答
  • 減少HTML傳輸
  • 減少頁面重載
  • 無閃爍的瀏覽器內容更改
  • AJAX用戶體驗,

6.4 AjaxAspects (2005年8月)

AjaxAspects 是個可以用Javascript調用服務端WebService事件的引擎

  • 用標準的SOAP和WSDL進行服務端-客戶端通信
  • 用簡單的類型和XML對象支持帶參數的返回值
  • 緩存支持
  • 動作隊列
  • 免費使用,開源協(xié)議

7 Server-Side: PHP

7.1 AjaxAC (2005年4月)

AjaxAC 用一個單獨類封裝了完整的應用程序功能

  • 所有的功能集成在自包含的類中(另外附帶一些Javascript庫)
  • 調用PHP文件或者HTML頁面非常簡易,只需創(chuàng)建App類后把類引用傳遞給需要調用的Javascript對象或者HTML元素即可。
  • 捕獲Javascript事件
  • 可以自定義配置數據,并且支持運行時參數更改
  • 無需再Javascript代碼中夾雜凌亂的Html代碼,所有事件都是被動態(tài)附加上的
  • 由于以上兩個優(yōu)點,所以支持良好的模版引擎
  • 容易Hook到PHP類和MySql數據已返回給自己的request
  • 能夠容易的用Javascript建立窗口模式應用程序。

7.2 JPSpan

JPSPAN 通過Javascript直接調用PHP中的函數。

  • 進行了嚴謹的單元測試
  • 開源許可(PHP)

7.3 XAJAX

XAjax 通過Javascript直接調用PHP中的函數

  • 支持用Javascript調用PHP腳本
  • 開源許可協(xié)議

8 Server-Side: Ruby

8.1 Ruby On Rails

Ruby On Rails 是一個支持AJAX的完整Web框架,使用Ruby語言編寫,嚴格按照MVC結構開發(fā)。

  • 當Ajax出現的時候Rails還處于其發(fā)展的早期,因此Ajax可能逐漸成為Rails框架的核心。
  • 生成瀏覽器中大多數/全部的Window應用組件和動畫的Javascript腳本。
  • 支持服務器端調用。
  • 隊列支持
  • 開源許可