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