本教程將引導你學習XUL語言(XML用戶界面語言)--一種描述應用程序用戶界面(UI)的跨平台語言。
本教程示例創建一個簡單的查找文件的用戶界面,類似Mac機上的Sherlock或者Windows上面的查找文件對話框。需要注意的是僅僅是創建用戶界面,以及相當有限的功能。實際的查找文件操作並沒有實現。修改查找文件對話框的地方段落左邊有一條藍線。你可以以此來查看這些章節。
什麼是XUL及為什麼創建這門語言?
創建XUL(發音為"zool",與"cool"押韻)是為了讓Mozilla浏覽器的開發更容易更快捷。它是一種XML語言,因此XML的所有特性也適用於XUL。
在構建跨平台軟件的時候,很多應用程序都需要去開發某些平台的特定功能,這無疑耗費了時間和支出。過去已經開發出了一定數量的跨平台的解決方案。如Java,可移植性是它的主要賣點。XUL就是為構建可移植的用戶界面而設計的。構建一個應用程序,即便針對一個平台,也要耗費很長的時間。編譯和調試所需要的時間可能很多。而使用XUL,界面可以很快速、輕易的執行或修改。
XUL擁有所有其它XML語言的優點。例如XHtml或其它XML語言像MathML或者SVG可以插入到裡面。而且,使用XUL顯示的文本更容易本地化,也就是說很容易就能將它們翻譯為其它語言。
哪些類型的用戶界面可以使用XUL?
XUL可以創建在現代圖形界面中使用的絕大多數元素。列舉一些可以創建的元素如下:
輸入控制如文本框和單選框
帶有按鈕或其它內容的工具欄
菜單欄或彈出菜單欄上的菜單
TAB對話框
可繼承的樹型結構或扁平信息(Trees for hIErarchical or tabular information)
快捷鍵
顯示內容可以由XUL文件內容創建,或者是由數據源來的數據進行創建。在Mozilla中,使用數據源的有用戶郵箱,書簽和搜索結果。菜單內容,樹狀結構以及其它元素可以由這些數據填充,抑或由你自定義在RDF的數據填充。
有幾種情況你可能會使用XUL:
Firefox擴展--給浏覽器自身添加各種功能的擴展,常用形式有:浏覽器用戶界面的附加工具條,上下文菜單,或者用戶定制等等。要完成這個功能使用的XUL特性被稱為重載(overlay),它將一個源裡面提供的UI(本例中,Firefox浏覽器),與擴展裡面的UI進行合並。擴展也可以應用於其它基於Mozilla的產品例如Thunderbird。
Standalone模式的XULRunner應用程序--XULRunner是Mozilla平台的一個打包的版本,它允許創建獨立運行的XUL應用程序。運行這些程序不需要浏覽器,因為它們擁有自己的可執行文件。
XUL包--介於另外兩者之間。其它兩種都是應用程序,都以作為擴展的方式進行創建,它們更似一個獨立窗口運行的獨立應用程序。XUL包在該種情況下用到:不想使用完全XULRunner應用程序的大尺寸,但又不介意需要安裝Mozilla浏覽器來運行程序。
遠程XUL應用程序--也可以將XUL代碼放置在WEB服務器上,使用浏覽器打開,如同打開其它的WEB頁面一樣。但是這種方式有所限制,出於安全方面的考慮,會限制一些類型的操作,如打開其它窗口。
前三種類型都需要在客戶機上有安裝操作。但這些類型的應用程序運行沒有安全限制,例如它們可以訪問本地的文件並讀寫參數。對於擴展,應用程序需要使用的XUL文件及關聯的腳本和圖片需要被打包進一個獨立的文件,用戶下載並安裝。Mozilla應用程序如Firefox提供了一個擴展管理器,允許直接將這些包進行安裝而無需寫大量復雜的代碼。
也可以直接從文件系統或從遠程WEB頁面打開XUL文件;但這樣有部分原本可以進行的操作會被限制,部分XUL會無效。當然,要從遠程站點讀取XUL內容,WEB服務器需要設置發送XUL文件類型為"application/vnd.mozilla.xul+XML"。XUL通常存儲在以.xul為擴展名的文件中。可以通過Mozilla直接打開XUL文件,如同打開其它文件一樣--從 文件 菜單使用 打開文件 命令或直接在 地址欄 裡面輸入URL地址。
使用本教程我需要懂些什麼?
你需要懂得Html語言,至少一些基礎的XML和CSS知識。頭腦中記住以下幾條要點:
XUL元素及屬性都應該以小寫標注,而XML是大小寫敏感的(不同於Html)
XUL中的屬性值必須放在引號中,即使它們是數字。
XUL文件通常被分成4個文件,它們分別用於布局和元素,樣式聲明,實體聲明(用於本地化)以及腳本。另外,可能還有其它文件,用於圖片或平台特定數據。
XUL在Mozilla和基於Gecko引擎的浏覽器上都被支持,如Netscape 6或更新的Mozilla Firefox。由於XUL語法可能隨時間推移會有不同的變化,你可能需要獲取最新版的示例才能正常運行。絕大多數示例可以在Mozilla 1.0或更新版中正常運行。XUL在Firefox和其它浏覽器中運行相當類似,盡管有一些特定的差異如自定義工具欄的支持。
盡管本教程試圖涵蓋更多的XUL功能,但是,並非所有的特征都列舉出來了。當你熟練掌握XUL後,你可以使用XUL Reference去查找某些元素的其它特性。