2006 年 9 月 04 日
IBM 致力于啟動新 Open Ajax Initiative 的目的是希望通過 Eclipse Foundation 增加對強大 Web 編程技術(shù)的支持。為了幫助開發(fā)人員為使用新工具集做好準備,本文介紹了兩種現(xiàn)有的運行時工具 Dojo 和 Zimbra,在 Eclipse 的 Ajax Toolkit Framework (ATF) 將支持他們。
Open Asynchronous JavaScript and XML (Ajax) Initiative 背后的合作伙伴正在通過構(gòu)建一種開發(fā)人員可以協(xié)作的開放平臺來加強社區(qū)。Initiative 的創(chuàng)始成員,其中包括 BEA Systems、Borland Software、The Dojo Foundation、The Eclipse Foundation、Google、IBM、Laszlo Systems、Mozilla、Novell、Openwave Systems、Oracle、Red Hat、Yahoo!、Zend Technologies 和 Zimbra,意識到引入新工具到正在成長的 Ajax 開發(fā)人員社區(qū)的巨大重要性。Initiative 將范圍廣泛的一系列工具放到正在將響應性用戶界面 (UI) 構(gòu)建到新環(huán)境和現(xiàn)有環(huán)境的人們手中。Eclipse 中的統(tǒng)一界面和高級調(diào)試能力為社區(qū)帶來了企業(yè)級編碼環(huán)境。Eclipse 的 ATF 將提供從 Dojo 和 Zimbra 對工具包的容易訪問。
Initiative 成員相信,Open Ajax 的主要后盾可能是它驅(qū)動 Web 在其中仍有生命力這一消息的引爆點。Open Ajax Initiative 正在為 Web 的健康做出積極的努力。
注意:參閱 參考資料 中解釋 Open Ajax Initiative 的新聞稿。
Eclipse ATF
Eclipse Foundation 已經(jīng)成為開放源碼開發(fā)和強大應用程序框架的航標。Eclipse 是基于 Java? 的開放源碼平臺,它可以完全擴展并部署在每個主要平臺上。各種范圍廣泛的插件和工具均可用。
作為 Open Ajax Initiative 的一部分,Eclipse Foundation 正在構(gòu)建 ATF,它將為運行時環(huán)境(比如 Dojo 和 Zimbra)提供可擴展框架。ATF 作為 Open Ajax Initiative 的一部分,扮演著中央組件統(tǒng)一工具的角色。ATF 的早期版本可從 IBM alphaWorks(參見 參考資料)獲得。
基于 Eclipse Web Tools Project,ATF 提供用于構(gòu)建獨立開發(fā)環(huán)境 (IDE) 的工具,包括運行時語法檢查等特性,并嵌入 JavaScript 調(diào)試器、Document Object Model (DOM) 瀏覽器和 Mozilla Web 瀏覽器。ATF 為傳統(tǒng)的特性松散的開放源碼開發(fā)工具提供了完全的企業(yè)風格的開發(fā)環(huán)境,許多開發(fā)人員在該環(huán)境中工作感到輕松自在。本教程重點介紹 Dojo 和 Zimbra,因為它們是目前可用的兩個最有能力最成熟的 Ajax 工具。圖 1 展示了 initiative 的組件以及 ATF 如何裝配。
圖 1. Open Ajax Initiative 組件
Dojo
如果打算采用 Open Ajax Initiative 中使用的工具,則應熟悉 ATF 將支持的工具包,比如 Dojo 和 Zimbra。
Dojo 是一個社區(qū)項目,設計目的在于通過構(gòu)建標準 JavaScript 庫,將 JavaScript 和 Dynamic Hypertext Markup Language (DHTML) 的努力統(tǒng)一為單個方向。社區(qū)意識到?jīng)]有人們的合作不會走得太遠,因此三個獨立的前輩工具包被統(tǒng)一組成 Dojo Foundation,它擁有并維護代碼。Dojo 具有多個可選軟件包,其中包括 Ajax 版本、I/O 版本和 “Kitchen Sink” 版本(該版本包括整個工具集合)。
入門 Dojo 只需下載下列五個版本之一:
- Ajax — 使用 Ajax 版本創(chuàng)建帶有同步 I/O (XmlHttp) 的應用程序,集成復雜的可視效果,并使用面向方面的事件系統(tǒng)。
- I/O (XmlHttp) — I/O 版本是用 dojo.io.bind 構(gòu)建的,所以可以為異步 I/O 使用 XmlHttp 層。
- Event + I/O — 該版本包括 Dojo 的面向方面事件系統(tǒng)和 XmlHttp 層。
- Widgets — 該版本包括與小部件實現(xiàn)松散耦合的 HTML 和 Cascading Style Sheet (CSS) 模板能力,提供明確分離的樣式、內(nèi)容和邏輯。
- Kitchen Sink — 該版本包括所有 Dojo 庫。
安裝 Dojo
選擇合適的 Dojo 版本,下載,并解壓軟件包。將下列文件移動到 Web 根目錄(為了示例目的將添加 helloworld.html 文件):
- dojo.js
- iframe_history.html
- src(目錄)
- helloworld.html
使用指向 Dojo 文件的路徑添加單個行到 .html 文件中:
<script type="text/javascript" src="path/to/dojo/dojo.js"></script>
|
現(xiàn)在可以在 JavaScript 中隨意下載 Dojo 庫和小部件(參閱 參考資料 獲得詳細介紹)。
簡單的 Dojo 示例
現(xiàn)在嘗試一個簡單的示例,它在您每次按下按鈕時通過調(diào)試過程輸出 “Hello World!”。我們將在本例中編輯 helloworld.html。清單 1 所示代碼的初始部分設置 dojo.js 的路徑,并打開調(diào)試模式以便測試您的輸出。
清單 1. 輸出 “Hello World!” 的簡單示例
<html>
<head>
<script type="text/javascript">
djConfig = { isDebug: true };
<script>
<script type="text/javascript" src="./dojo.js"></script>
|
使用帶有 “事件” 的 Button2 小部件調(diào)用 helloPressed 函數(shù):
清單 2. 使用帶有 “事件” 的 Button2 小部件調(diào)用 helloPressed 函數(shù)
<!-- DOJO EXECUTION -->
<script type="text/javascript">
dojo.require("dojo.widget.Button2");
dojo.require("dojo.event.*");
|
helloPressed 函數(shù)僅調(diào)用 dojo.debug 以輸出 “Hello World!” 消息:
function helloPressed()
{
dojo.debug(‘Hello World!‘);
}
|
下面是 init 函數(shù),該函數(shù)將 helloButton 與 Dojo 小部件相關(guān)聯(lián)。第二行指明在您單擊 Press Me 時應調(diào)用 helloPressed 函數(shù)。
function init()
{
var helloButton = dojo.widget.byId(‘helloButton‘);
dojo.event.connect(helloButton, ‘onClick‘, ‘helloPressed‘);
}
|
下一行在初始頁面加載時運行 init 函數(shù):
最后,HTML 的主體包含實際按鈕,該按鈕被賦予 type 和 Id 以與上述 JavaScript 關(guān)聯(lián)。
清單 3. 將 ID 與上述 JavaScript 關(guān)聯(lián)
</script>
</head>
<body>
<button dojoType="Button2" widgetId="helloButton">Press Me</button>
</body>
</html>
|
圖 2 展示單擊 Press Me 之后 “Hello World!” Dojo 應用程序的輸出。
圖 2. “Hello World!” Dojo 應用程序的輸出
詳細的 HelloWorld 示例可從 Dojo wiki(參見 參考資料)獲得。
Dojo 通過提供強大的不斷增長的小部件集合,使得將 Ajax 代碼的小片段集成到現(xiàn)有 Web 頁面中更加容易,使用那些小部件集合很容易添加預期在桌面環(huán)境中看到的 UI 效果。開發(fā)人員避免了親手編寫 UI 的每一部分。對于高級用戶,它提供了多數(shù)工具沒有提供的能力。例如,包括了打包和構(gòu)建系統(tǒng)以快速優(yōu)化要部署的項目。Dojo 對于所有級別的 Ajax 開發(fā)人員來說是令人滿意的解決方案。
ATF 將 Dojo 集成到 Eclipse 中,它的引入通過提供圖形編碼環(huán)境和對附加 Eclipse 插件的訪問將這些能力增強到企業(yè)級。有關(guān) Eclipse 中 Dojo 的早期演示,請參閱 參考資料。
Zimbra Ajax Toolkit
Zimbra 通過提供對 Zimbra Ajax Toolkit (AjaxTK) 的開放訪問來致力于 Open Ajax Initiative。Zimbra 已經(jīng)使用 AjaxTK 挑戰(zhàn)了我們所謂的 Web 頁面的極限,開發(fā)出完整的在線 Collaboration Suite,其中包括企業(yè)級電子郵件、日歷和聯(lián)系人。AjaxTK 將基于 Web 的應用程序和基于標準桌面的應用程序之間的差距縮減為零。圖 3 展示了 Zimbra 的 Collaboration Suite 中包括的郵件應用程序,該應用程序是使用 AjaxTK 開發(fā)的。
圖 3. Zimbra 的郵件應用程序
圖 4 展示了 Zimbra 的日歷應用程序,也是用 AjaxTK 開發(fā)的。
圖 4. Zimbra 的日歷應用程序
開發(fā)這個令人印象深刻的 Collaboration Suite 時內(nèi)部使用的 Ajax 工具也可公開使用。對 Ajax 開發(fā)的開放和非專利環(huán)境的信任提供了將這個強大的工具公布于眾的動力。
AjaxTK 構(gòu)建于下列源軟件包之上:
- config — 配置信息和消息本地化文件
- core — 基本異常類和環(huán)境信息
- debug — 用于運行時應用程序調(diào)試的調(diào)試類
- dwt — DHTML Widget Toolkit:
- config — CSS 規(guī)則、圖像和本地化文本
- core — 異常處理和低級 DOM 實用程序函數(shù)
- dnd — 拖放支持
- events — 由工具包使用的、構(gòu)建于一般 AjaxTK 事件支持之上的各種事件
- graphics — 點、矩形和 CSS 實用程序
- widgets — DWT 小部件集合和支持類
- xforms — 提供創(chuàng)建復雜表單的 XForms 實現(xiàn)
- event — 基本事件和事件監(jiān)聽器類,以及負責事件注冊和分配的事件管理器類
- net — 網(wǎng)絡通信
- soap — SOAP 文檔處理
- util — 字符串操作、cookie 管理、數(shù)據(jù)操作、延遲動作支持和回調(diào)支持等任務的實用程序類
- xml — XML 文檔處理
企業(yè)開發(fā)人員可以在獲知 Zimbra Ajax Toolkit 通常用于構(gòu)建在現(xiàn)實世界中部署的大型健壯的應用程序時感到安慰。Zimbra 的 Collaboration Suite 包含 130,000 多行 JavaScript。AjaxTK 針對計劃為桌面應用程序構(gòu)建完全替代品的開發(fā)人員。如果您想使用 Ajax 增強現(xiàn)有 Web 頁面,可能 Dojo 更合適一些。選擇取決于您要做的事情。
AjaxTK 插入 Eclipse 之后,開發(fā)富 UI(比如樹、按鈕和列表)通常需要的組件將更容易、更快地實現(xiàn)。與 Eclipse 的集成為表添加了增強的能力,包括強大的調(diào)試工具和拖放合成。Zimbra 打算通過與 Open Ajax Initiativ 的成員協(xié)作并支持開放、非專利技術(shù)來繼續(xù)驅(qū)動 Ajax。
initiative 在前進
因為 Ajax 的采用幫助 Web 達到新的互動性和響應性水平,企業(yè)級開發(fā)工具的重要性將繼續(xù)增長。ATF、Dojo 和 Zimbra 是這次發(fā)展的關(guān)鍵組件。隨著 Web 觀眾不斷需求更好、更快、更順暢的 Web 應用程序,工具包開發(fā)人員和瀏覽器制造商有責任維護一個協(xié)作環(huán)境來鼓勵 UI 和跨平臺兼容性的發(fā)展。Open Ajax Initiative 正是為此目的而構(gòu)建的框架。
隨著 Open Ajax Initiative 大步前進,ATF 蓬勃發(fā)展,本系列將繼續(xù)進行,提供在 Eclipse 中構(gòu)建 Ajax 應用程序的技術(shù)詳細信息和教程。
致謝
特別感謝 Alex Russell(Dojo Foundation 的創(chuàng)始人和總裁)、Ross Dargahi(Zimbra 的共同創(chuàng)建人和工程副總裁)和 John Robb(Zimbra 的營銷和產(chǎn)品管理副總裁)花費寶貴的時間為本文的 Open Ajax Initiative 提出建議。
參考資料
學習
獲得產(chǎn)品和技術(shù)
討論
|