其他技術(shù)
RIA 概述
術(shù)語 “Rich Internet Application” 已經(jīng)出現(xiàn)幾年了,但該概念還被稱為:
- 遠(yuǎn)程腳本
- X Internet
- 富 (Web) 客戶機(jī)
- 富 Web 應(yīng)用程序
Internet 是信息的巨大來源,許多技術(shù)在努力以高級和用戶友好的方式改進(jìn) Web 上的信息傳遞和存儲性能。在大多數(shù) Web 應(yīng)用程序中,大量處理發(fā)生在服務(wù)器端,只有用戶交互發(fā)生在客戶機(jī)端。從而使服務(wù)器承擔(dān)了沉重的數(shù)據(jù)和處理負(fù)載,以及網(wǎng)絡(luò)通信中不斷增加的依賴性。
傳統(tǒng)的基于客戶機(jī)-服務(wù)器的架構(gòu)具有高的靈活性和豐富性,但隨著 Web 的成長而日漸消亡。一個(gè)原因是缺乏客戶機(jī)應(yīng)用程序的一致性和標(biāo)準(zhǔn)化。現(xiàn)在,勿庸置疑,瀏覽器是已經(jīng)被人們普遍接受的 Web 工具。但是,它缺乏智能處理。所以責(zé)任在于可以交付更豐富的用戶體驗(yàn)并能在客戶端進(jìn)行簡單處理的客戶機(jī)應(yīng)用程序。RIA 提供了設(shè)計(jì)更好、更快、更吸引人并更無限可用的用戶體驗(yàn)的機(jī)會 —— 全部在瀏覽器中實(shí)現(xiàn)。
致力于 Web 和 internet UI 層的開發(fā)人員通常在 UI 層上進(jìn)行試驗(yàn),嘗試可以在最少外部支持下有效工作的各種 RIA 工具。但是,在多數(shù)情況下,瀏覽器需要一些支持以使插件、擴(kuò)展或下載在瀏覽器內(nèi)部無縫工作。
本文討論有助于為業(yè)務(wù)案例確定最佳 RIA 選擇的工具和參數(shù)。本文不可能討論 RIA 的所有因素,但我將重點(diǎn)介紹您在評估 RIA 技術(shù)時(shí)審核的一些重要特性。
評估內(nèi)容
評估 RIA 技術(shù)時(shí),需要考慮下列因素:
- UI 豐富性
- 開發(fā) UI 時(shí)有多少基本的、開箱即用的 UI 小部件或控件可以使用?可以如何使用這些控件進(jìn)行數(shù)據(jù)綁定和事件綁定?新控件應(yīng)易于使用,并易于插卸。一些 RIA 技術(shù)提供了添加豐富性的簡單方法和信息更豐富的可視體驗(yàn),比如頁面中的動畫 API。例如,為了確保用戶僅點(diǎn)擊某個(gè)按鈕一次,可以將此按鈕做成動畫以從視圖中移出。
- 復(fù)雜性
- 開發(fā)人員已經(jīng)使用現(xiàn)有的基于頁面的模型很多年了,因?yàn)樗唵我子茫强赡芎鼙恐亍IA 技術(shù)必須易于使用、構(gòu)建和擴(kuò)展。它還應(yīng)該與現(xiàn)有 Web 技術(shù)相互操作。
- 靈活性和組件化
- 與不同中間件組件協(xié)作的靈活性非常重要。協(xié)作應(yīng)該能夠容易地組合和擴(kuò)展,以創(chuàng)建新的自定義小部件。創(chuàng)建自定義小部件之后,就可以在應(yīng)用程序中重用它們。
- 刷新頁面
-
刷新頁面的一塊而不是整個(gè)頁面有非常顯著的好處,因?yàn)樗苯右蕾囉诰W(wǎng)絡(luò)流量。刷新一塊使得應(yīng)用程序更快、更可用并使用戶具有更好的視覺體驗(yàn)。它還有助于更好地管理錯(cuò)誤。
假設(shè)用戶在網(wǎng)頁上執(zhí)行一個(gè)操作或第一個(gè)任務(wù),并且數(shù)據(jù)在后臺提交給服務(wù)器。然后用戶在同一頁面上繼續(xù)執(zhí)行另一個(gè)任務(wù)。同時(shí),來自第一個(gè)任務(wù)的反饋已經(jīng)返回并更新同一頁面的某個(gè)部分。因此,如果這樣設(shè)計(jì)網(wǎng)頁,則會使工作和任務(wù)更有效率。
- 安全性
- 采用 RIA 時(shí),確保與傳統(tǒng)應(yīng)用程序相比不會增加安全性威脅。一定要清楚圍繞服務(wù)器通信或下載在客戶機(jī)上的瀏覽器插件和擴(kuò)展的安全性。
- 對基本 Web 范例的支持
- 技術(shù)應(yīng)支持當(dāng)今 Web 應(yīng)用程序中涉及的基本 Web 范例,比如國際化、用戶設(shè)備獨(dú)立、瀏覽器獨(dú)立和對上載和下載功能的二進(jìn)制文件傳輸支持。甚至技術(shù)的成熟度也很重要。
- 工具
- 檢查以集成開發(fā)環(huán)境 (IDE) 形式可供開發(fā)人員使用的工具,以及單元測試和調(diào)試支持。工具可以是帶有現(xiàn)有編輯器或受支持編輯器的插件。
- 可用性
- 用戶期望瀏覽器應(yīng)用程序使用常用的瀏覽器功能。具體來說,保存圖片、Ctrl+F 以搜索頁面上的內(nèi)容以及復(fù)制粘貼等功能不能在基于 Flash 的解決方案中工作。以人機(jī)交互 (HCI) 原理設(shè)計(jì)您的 RIA 可用性。
UI 技術(shù)
本節(jié)討論當(dāng)前 UI 技術(shù)提供的一些不同選項(xiàng)。
Laszlo
Laszlo 是領(lǐng)先的開放源碼平臺,用于在 Web 中使用 Flash 來開發(fā)和交付 RIA。Flash 播放器最初具有一個(gè)小插件以在瀏覽器中運(yùn)行 Flash 文件。因?yàn)槠涓呖煽啃院图嫒菪裕粩U(kuò)展用于創(chuàng)建閃爍的動畫圖片。后來的版本合并了一些重要的腳本兼容性、與服務(wù)器的數(shù)據(jù)交換,F(xiàn)lash 6 添加了雙向音頻和視頻通信。
Laszlo 已經(jīng)擴(kuò)展了該豐富性,使用腳本語言來生成 Flash 并交付給瀏覽器。它提供了一個(gè)用于構(gòu)建 RIA 的開發(fā)源碼 XML 本地平臺。
 |
什么是 XPath?
XML Path Language 是 W3C 推薦的語言,設(shè)計(jì)用于尋址 XML 文檔中的信息。XPath 的主要目的在于導(dǎo)航 XML 文檔中的任何節(jié)點(diǎn)和屬性。 |
|
它只需要在任何瀏覽器上安裝 Flash 5.x+。腳本以一種叫做 LZX 的基于 XML 的語言編寫。LZX 是一種面向?qū)ο蟮幕跇?biāo)記的語言,使用 XML 和 JavaScript 語法創(chuàng)建動態(tài)生成的 Flash 文件。服務(wù)器上的 LZX 編譯器編譯 LZX 文件并將 Flash 發(fā)送到瀏覽器中。實(shí)際的數(shù)據(jù)交換是以 XML 形式進(jìn)行的,LZX 控件使用 XPath 來表示 XML。事件也很容易與控件綁定。每個(gè)控件定義一組可以從父事件繼承事件的事件。清單 1 中的示例展示了如何使用事件。
清單 1. 示例 simplelaszlo.lzx
<canvas width="500" height="80">
<view>
<text align="center" valign="middle">Hello, World!</text>
<button >Update
<method event="onclick">
Debug.write("Button pressed");
</met>
</button>
</view>
</canvas>
|
您將發(fā)現(xiàn) Laszlo 易于學(xué)習(xí)、開發(fā)新組件、組件化并與任何 Web 應(yīng)用程序集成。與其他 RIA 工具相比,它具有豐富的組件庫。
LZX 能夠讓 HTTP 和 Web 服務(wù)使用 SOAP 和 RPC 協(xié)議在后臺請求服務(wù)器,而無需刷新頁面。插件已經(jīng)就緒,可以將任何 Web 應(yīng)用程序文件與 Laszlo 庫集成。當(dāng)前,基于 Eclipse 的 IDE 可供開發(fā)使用。還有一些工具可用于在客戶端的 LZX 中進(jìn)行調(diào)試。有趣的是,它們還提供了 Lzunit 框架以用于測試 Laszlo 應(yīng)用程序。
最近,Laszlo 宣布了支持使用相同的現(xiàn)有框架將應(yīng)用程序以 DHTML 交付給瀏覽器。這使您可以選擇配置時(shí)希望將應(yīng)用程序交付為 DHTML 還是 Flash。Laszlo 還擴(kuò)展了對 Ajax 社區(qū)和多個(gè)設(shè)備交付的支持。
圖 1 展示了 Laszlo 和 Dojo 的示例。
圖 1. 用 Laszlo 和 Dojo 創(chuàng)建的 RIA 圖片
XUL
XML 用戶界面語言 (XUL) 是 Mozilla 的基于 XML 的跨平臺語言,用于描述應(yīng)用程序的用戶界面。它提供了可用于頁面中的現(xiàn)成組件庫。目前,它僅應(yīng)用于基于 Gecko 的瀏覽器中,比如 Mozilla Firefox 或 Netscape 6 以上版本。
XUL 使用基于 XML 的標(biāo)記語言描述用戶界面控件。它提供了各種流行的富 Internet 控件,比如菜單、選項(xiàng)卡、樹和彈出菜單。XUL 使用文檔對象模型 (DOM) 存儲節(jié)點(diǎn)樹。加載了所有 XUL 文件之后,XUL 將所有標(biāo)記解析并轉(zhuǎn)換為層次文檔結(jié)構(gòu)的節(jié)點(diǎn)。然后可以使用此 DOM 結(jié)構(gòu)、DOM 結(jié)構(gòu)的方法以及 XUL 函數(shù)提供的其他方法來檢查并修改數(shù)據(jù)。您始終可以從 JavaScript 訪問并操作 DOM,并使之像典型的 HTML 控件一樣易于處理。每個(gè)控件和每個(gè)節(jié)點(diǎn)都具有多個(gè)屬性來定義其外觀和結(jié)構(gòu)。
從遠(yuǎn)程位置訪問時(shí),瀏覽器像處理 HTML 或其他瀏覽器內(nèi)容一樣處理 XUL 文件。但是,當(dāng)它們作為擴(kuò)展而本地安裝在其 chrome 系統(tǒng)的瀏覽器中時(shí),條目將收到訪問系統(tǒng)和書簽的特殊權(quán)限。在這種情況下,它可以執(zhí)行其他的特權(quán)操作。
Mozilla 瀏覽器本身也是一組軟件包,其中包括 XUL 文件、JavaScript 和樣式表,但它是相當(dāng)大的而且非常復(fù)雜的擴(kuò)展。
XUL 使用 eXtensible Bindings Language (XBL) 進(jìn)行綁定。每個(gè)控件可以使用 Mozilla 的 XBL 被綁定。XUL 使用 RDF 格式,可用于存儲資源。可以使用其他格式的數(shù)據(jù),并從中創(chuàng)建 RDF 數(shù)據(jù),該數(shù)據(jù)將綁定到 XUL 格式。
因?yàn)?XUL 類似于 XML 文件,所以可以使用 IDE 的任何文本編輯器或 XML 編輯器。因?yàn)橄嗤牡讓哟a處理所有 XUL 文件、HTML 和 SVG,所以可以使用 CSS 屬性設(shè)置 XUL 文件的樣式。它對定位具有內(nèi)置支持,因?yàn)樗形谋緝?nèi)容在瀏覽器中是保持分離的。
皮膚 在 Mozilla 中由 CSS 文件組成,定義瀏覽器的用戶界面。可以為不同的外觀修改和創(chuàng)建皮膚,而無需更改代碼。它類似于通過添加功能來擴(kuò)展瀏覽器 API 的功能。
如果在 Mozilla Firefox 中運(yùn)行 清單 2 中的文件,它將呈現(xiàn)一個(gè)文本框和按鈕。
清單 2. 示例 simplexul.xul
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window id="example-window" title="Example 2.4.1"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<label control="label" value="Enter some text"/>
<textbox id="textid"/>
<button id="yes" label="Yes"/>
</window>
|
XForms
XForms 1.0 提供了一種新的用于聯(lián)機(jī)交互的平臺獨(dú)立標(biāo)記語言。W3C 已經(jīng)出現(xiàn)了用于實(shí)現(xiàn) XForms 的規(guī)范,而且 XForm 被認(rèn)為是 HTML 形式的繼任者。
XForms 獨(dú)立于表示設(shè)備。無需對傳統(tǒng)瀏覽器、PDA 移動電話、語言瀏覽器、甚至一些更奇怪的新興客戶機(jī)(比如 instant messenger)進(jìn)行任何更改,就可以傳遞 XForms。這使得 XForms 成為更吸引 RIA 的工具。
在 XForms 中,實(shí)際數(shù)據(jù)(XML 表單定義)與表單表示分離。這種設(shè)備獨(dú)立的 XML 表單定義叫做 XForms 模型,可以用于許多標(biāo)準(zhǔn)的或?qū)S玫挠脩艚缑妗?/p>
XForms 用戶界面提供了一組標(biāo)準(zhǔn)的可視控件,旨在于替換當(dāng)今的 XHTML 表單控件。它們可用于 XHTML SVG 或其他組、語言瀏覽器組中,還可以獨(dú)立開發(fā) XForms 的用戶界面組件。XForms 模型被引用在每個(gè) XForms 控件中以呈現(xiàn)數(shù)據(jù)。它遵循 XPath 以引用 XML 中的元素。提交數(shù)據(jù)時(shí),它只能提交已填充的 XML 數(shù)據(jù)模型。
 |
XML 事件
XML 事件 是一種 XML 語言,能夠一致地將事件監(jiān)聽器和關(guān)聯(lián)的事件處理程序與 DOM 事件集成。當(dāng)事件發(fā)生時(shí),它被通過文檔樹路徑分配給元素(目標(biāo)),并可以再次傳遞回樹中。觀察者可以響應(yīng)路徑中的事件。 |
|
XForms 使用 XML 事件來處理事件和動作。XML 事件指定事件、觀察者和處理程序。正如 清單 3 所示,DOMActivate
是事件,消息元素是處理程序,父觸發(fā)器是觀察者。
可以將 XForms 與 AJAX 集成。當(dāng)前,在 W3C 中,可以找到 20 多個(gè) XForms 示例實(shí)現(xiàn)。許多供應(yīng)商,其中包括 IBM,已經(jīng)開發(fā)了 XML 的 XForms 引擎(參閱 參考資料 中的 XML Forms Package)。Mozilla 已經(jīng)宣布在 Mozilla 運(yùn)行的所有平臺上支持 XForms。要查看 XForms 實(shí)現(xiàn)的優(yōu)秀示例,請參閱 參考資料。
清單 3 展示了一個(gè)簡單的 XForms 示例,顯示了一個(gè)用 FormFaces™ 實(shí)現(xiàn)呈現(xiàn)的文本框和按鈕。
清單 3. 顯示用 FormFaces 實(shí)現(xiàn)呈現(xiàn)的文本框和按鈕的 XForm
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:form=http://www.w3.org/2002/xforms
xmlns:ev="http://www.w3.org/2001/xml-events" xml:lang="en">
<head>
<title>Simple example</title>
<link rel="stylesheet" type="text/css" href="xforms.css" />
<script type="text/javascript" src="../../formfaces.js"></script>
<form:model>
<form:instance>
<data xmlns="">
<greeting>Hi there!</greeting>
</data>
</form:instance>
</form:model>
</head>
<body>
<form:input ref="greeting" incremental="true">
<form:label>Greeting:</form:label>
</form:input>
<form:trigger>
<form:label>Trigger</form:label>
<form:message level="modal" ev:event="DOMActivate">You clicked
button</form:message>
</form:trigger>
</body>
</html>
|
Dojo
Dojo 是用 JavaScrip 編寫的開放源碼 DHTML 工具包。Dojo Toolkit 提供了一組核心庫,和一組豐富的不同的軟件包庫,每個(gè)庫提供特定的函數(shù)。Dojo 提供較低級的 API 來編寫可移植的 JavaScript 并簡化復(fù)雜的腳本。可以很容易很快地原型化交互小部件和動畫轉(zhuǎn)換。它提供了事件系統(tǒng)、I/O 軟件包和一般語言增強(qiáng)的庫。可以用 Dojo 編寫腳本,并根據(jù)您的需要包括任意多個(gè)可用的 API。
Dojo 還提供了一組可直接用于任何應(yīng)用程序中的小部件庫。可以使用其中一些核心小部件作為 UI 控件,比如菜單小部件、選項(xiàng)卡集、樹小部件等等。還有一般函數(shù),比如布局小部件、日期選擇器、SVG 小部件等等。
Dojo 基于單個(gè)標(biāo)記語言構(gòu)建,提供了聲明和使用響應(yīng) DHTML 界面組件的簡單方法。清單 4 展示了一個(gè)簡單的 Dojo 組件示例,它是 HTML 頁面中一個(gè)面向用戶的特殊按鈕。
清單 4. 示例 dojosample.html
<button dojoType="Button2" widgetId="helloButton">Hello World!</button>
You need to include the Dojo widgets library that is required in your HTML page.
<script type="text/javascript">
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.Button2");
</script>
|
Dojo 工具包還包括一些調(diào)試選項(xiàng)。AJAX Toolkit Framework (ATF) 可用作功能強(qiáng)大的 IDE。這是 IBM 的 Emerging technology Toolkit (ETTK) 的一部分,是一組特殊的新興技術(shù)。ATF 主要基于 Eclipse Web 工具項(xiàng)目,允許支持 DOM 瀏覽、JavaScript 調(diào)試等等。
最近,Dojo Foundation 宣布了與 Laszlo 的合作協(xié)議。按照該協(xié)議,您可以在 Laszlo 的開放源碼項(xiàng)目中使用 Dojo Toolkit。同樣,Laszlo 將將庫貢獻(xiàn)給 Dojo Foundation,從而促進(jìn)開放源碼社區(qū)的發(fā)展。
Macromedia Flex
Macromedia Flex 是另一種基于 Flash 的用戶界面。它提供位于應(yīng)用服務(wù)器頂層的 Flex 表示服務(wù)器,并從該服務(wù)器動態(tài)生成 Flash 文件,然后交付給瀏覽器。這些 Flash 文件在瀏覽器的 Flash 播放器內(nèi)部執(zhí)行,并允許用戶交互、執(zhí)行操作、甚至生成 SOAP、HTTP 或 AMF 請求以連接回服務(wù)器。
布局和 UI 組件在一種基于 XML 的語言 MXML 中定義。Flex 為可視組件、容器以及遠(yuǎn)程服務(wù)對象和數(shù)據(jù)模型提供了豐富的 MXML 擴(kuò)展類。它還與控件進(jìn)行數(shù)據(jù)綁定,并訪問服務(wù)器端數(shù)據(jù)。
ECMA 腳本語言 (ActionScript 2) 嵌入在 MXML 中以處理事件、系統(tǒng)事件或構(gòu)造復(fù)雜的數(shù)據(jù)模型。這是一種面向?qū)ο蟮恼Z言,類似于 JavaScript 和 ECME 腳本。與 XForms 一樣,F(xiàn)lex 保持?jǐn)?shù)據(jù)模型、數(shù)據(jù)表示、數(shù)據(jù)驗(yàn)證器和數(shù)據(jù)服務(wù)分離(類似于 MVC 樣式)。
到達(dá) MXML 的所有請求都通過 Flex 編譯器進(jìn)行處理,該編譯器編譯 MXML 并生成 SWF,然后將其高速緩存,直到它被修改并最終交付給瀏覽器為止。
任何 XML 編輯器都可用于編寫 MXML 腳本,但 Macromedia 還提供了一個(gè)特殊的 IDE 進(jìn)行 Flex 應(yīng)用程序開發(fā),叫做 Flex Builder 1.5。它的優(yōu)點(diǎn)是與 Flex 服務(wù)器集成。它還提供了一些組件,允許連接服務(wù)器、執(zhí)行正常的 HTTP 調(diào)用、連接遠(yuǎn)程 Java™ 對象并從瀏覽器本身與 Web 服務(wù)交互。它可以與現(xiàn)有的 J2EE 和 .NET 應(yīng)用程序模型集成。
清單 5 展示了 Macromedia Flex 代碼的一個(gè)示例。
清單 5. Macromedia Flex 代碼示例
<?xml version="1.0"?>
<mx:Application xmlns:mx="http://macromedia.com/2003/mxml">
<mx:Form label="Employee Information">
<mx:FormItem label="First Name">
<mx:TextInput id="firstName" />
</mx:FormItem>
</mx:FormItem>
</mx:Form>
<!-- The myEmployee data model. -->
<mx:Model id="myEmployee">
<name>
<first />
<last />
</name>
<department />
<email />
</mx:Model>
mx:Binding source="firstName.text" destination="myEmployee.name.first" />
</mx:Application>
|
Macromedia Flex 看起來類似于 Laszlo。二者都是豐富的功能強(qiáng)大的基于 Flash 的應(yīng)用程序。Laszlo 位于 Flash 引擎外,所以性能可能有所欠缺,但它具有其他優(yōu)點(diǎn)。
工具比較
下表比較了上文討論過的五種技術(shù)以及 Altiolive(一種豐富的企業(yè)應(yīng)用程序)。
表 1. 工具比較
技術(shù) |
瀏覽器技術(shù) |
腳本 |
豐富性 |
亮點(diǎn) |
Laszlo |
Flash、XML |
LZX 文件+JavaScript |
高 |
易于學(xué)習(xí),豐富 |
Mozilla XUL |
XUL 語言 |
XUL 文件+JavaScript |
高 |
依賴瀏覽器,功能強(qiáng)大 |
XForms |
Xform |
取決于實(shí)現(xiàn) |
限于一定程度 |
設(shè)備中立,遵循 W3C |
Dojo |
JavaScript |
HTML+JavaScript |
限于一定程度 |
基于 JavaScript。正在成長,可適應(yīng)。 |
Macromedia Flex |
Flash、XML |
MXML 文件 |
高 |
非開放源碼。Macromedia 的專有工具。 |
Altiolive |
Applet、XML |
Java |
限于一定程度 |
http://www.altio.com/ |
其他技術(shù)
我們已經(jīng)討論了五種技術(shù),當(dāng)然還有其他一些技術(shù)。許多公司使用各種技術(shù)提供了非常特別的 RIA 原型。盡管一一討論這些技術(shù)超出了本文范圍,但下面這些技術(shù)值得一看:
- Backbase —— 開發(fā)和銷售幫助創(chuàng)建 AJAX 應(yīng)用程序的軟件。
- Netvibes —— 自定義 Web 主頁解決方案的免費(fèi)服務(wù)。
- Zimbra —— 下一代企業(yè)消息傳送和協(xié)作的開放源碼服務(wù)器和客戶機(jī)技術(shù)。
- Protopage —— 免費(fèi)個(gè)人起始頁面。
- Nexaweb —— 用于綁定和部署 Enterprise Internet Application 的平臺。
- altio —— 瀏覽器中豐富的企業(yè)應(yīng)用程序。
結(jié)束語
本文介紹了 RIA,討論了當(dāng)前的 UI 技術(shù),并推薦了其他技術(shù)。我希望工具比較將幫助您根據(jù)需要作出一個(gè)正確的選擇。每種技術(shù)都有不同的優(yōu)點(diǎn),從而基于您的需要為開發(fā)人員提供了豐富的控件集合。
本文討論的技術(shù)為用戶帶來一些新奇的東西,并提供了更豐富的用戶體驗(yàn)。您現(xiàn)在可以跨越瀏覽器并呈現(xiàn)給 PDA、跨平臺的移動設(shè)備,并用音頻、視頻、圖像和動畫來豐富用戶體驗(yàn)。RIA 幾乎包含了 XML,因此 XML 無疑是優(yōu)勝者。
將來,我預(yù)計(jì) RIA 將會在 Web UI 轉(zhuǎn)換到下一級別中扮演重要的角色,并幫助準(zhǔn)備支持 Web 2.0。