過(guò)去五年左右的時(shí)間里,web 應用程序開(kāi)發(fā)領(lǐng)域變遷非常之快。過(guò)去,既能夠交付可靠后端代碼、又能夠設計漂亮 UI 的 web 開(kāi)發(fā)人員少之又少,現在有了諸如 Ruby on Rails 和 jQuery 之類(lèi)強大的開(kāi)發(fā)框架,這樣的開(kāi)發(fā)人員越來(lái)越多了。與此同時(shí),CSS 和 HTML(一種相當簡(jiǎn)單的工具,用于確定 web 頁(yè)面的結構和布局)已經(jīng)穩定成為靈活且強大的環(huán)境,允許開(kāi)發(fā)人員創(chuàng )建相當有吸引力的用戶(hù)體驗。
但是有時(shí)候,這些開(kāi)發(fā)人員需要進(jìn)一步開(kāi)發(fā) “純” web 應用程序(用引號表示強調,因為每個(gè)開(kāi)發(fā) web 軟件的人都知道,這做起來(lái)比看起來(lái)可難多了,但是總有一些人不以為然)。在這個(gè)快速變化的世界里,光有 web 應用程序還不夠,您還需要移動(dòng)和桌面應用程序。
問(wèn)題是,如果您來(lái)自解釋性腳本編程語(yǔ)言(比如 Python、JavaScript 或 PHP),那么要轉變到 Java? 技術(shù)、C++ 或 Objective-C語(yǔ)言不是那么容易的。事實(shí)上,可能會(huì )非常困難。跟新語(yǔ)言相關(guān)的各個(gè)方面都很困難:您必須處理已編譯的代碼;配置設備;在不同的平臺上(比如 Apple Macintosh、Windows? 或 Linux?)進(jìn)行測試。您很可能必須以一種全新的方式開(kāi)始工作。
所以,即使您可以學(xué)習一種新語(yǔ)言(比如說(shuō) Objective-C,如果您想要編寫(xiě) Apple iPhone 或 iPad 應用程序的話(huà)),您仍然必須學(xué)習如何以符合新環(huán)境的方式來(lái)編程。如果是在編寫(xiě) Android 或 iPhone 應用程序,那么您需要完成一些特定的步驟,以獲得開(kāi)發(fā)人員證書(shū)、運行構建文件、配置設備、測試運行在設備上的代碼,最終完成另一個(gè)過(guò)程,提交您的應用程序,以便發(fā)布。
對于普通的 web 開(kāi)發(fā)人員,習慣于通過(guò) SFTP 將代碼傳輸到測試服務(wù)器上,運行各種瀏覽器檢查,然后立即發(fā)布,那么整個(gè)過(guò)程都會(huì )顛覆。
但是,如果您可以使用您對熟悉的語(yǔ)言已經(jīng)具有的技能,使用這些語(yǔ)言來(lái)為桌面和移動(dòng)平臺構建原生應用程序,然后將這些應用程序打包以便發(fā)布和使用,那會(huì )怎么樣呢?哦,您找對文章了,因為 Titanium 就是您這些問(wèn)題的解答,Titanium 是 Appcelerator 發(fā)布的一個(gè)免費的開(kāi)源開(kāi)發(fā)工具包(參見(jiàn) 參考資料)。
簡(jiǎn)而言之,Titanium 是一個(gè)快速的應用程序開(kāi)發(fā)平臺,它使用 HTML、JavaScript 和 CSS(針對初學(xué)者)開(kāi)發(fā)桌面和移動(dòng)應用程序。該框架也支持使用 Python、Ruby 和 PHP,它們跟前端技術(shù)一起,讓您能夠使用所有您熟悉的能夠用來(lái)創(chuàng )建應用程序的技術(shù)。
其他平臺(比如說(shuō) Adobe? AIR?)與此類(lèi)似,只不過(guò) Titanium 是在免費/開(kāi)源的 Apache 許可下發(fā)布的,您無(wú)需學(xué)習 Adobe Flash? 或 ActionScript 就可以開(kāi)始使用?;旧?,您將使用的是一個(gè)獨立的 WebKit 客戶(hù)端和一個(gè)功能廣泛的 API,包含一個(gè)內部 SQLite 數據庫和完整的文件系統訪(fǎng)問(wèn)權(還有一些其他特性),您可以將它們與自己的 CSS、JavaScript、HTML 和后端代碼組合起來(lái)。此外,您還具有對一些常見(jiàn)包裝器的訪(fǎng)問(wèn)權,包裝器里包裝了諸如桌面通知、托盤(pán)圖標、窗口菜單和其他小部件之類(lèi)的東西,它們允許您的應用程序很自然地與大多數主流操作系統兼容。
要開(kāi)始使用 Titanium,在 Appcelerator 網(wǎng)站上單擊 Download Titanium。軟件包下載完成之后,將它安裝在您的系統上。在 Mac OS X 上,只要將 Titanium 圖標拖放到 Applications 文件夾圖標上即可。
安裝 Titanium 后,可能還需要運行更新和下載輔助庫,然后才能使用。所有事情都完成后,首次啟動(dòng) Titanium;應該會(huì )看到一個(gè)歡迎頁(yè)面。如果您已經(jīng)有了用戶(hù)名和密碼,就使用這些憑證登錄。否則,現在就花一分鐘創(chuàng )建您的憑證。您將使用這些憑證訪(fǎng)問(wèn) wiki、支持門(mén)戶(hù)和其他資源(比如說(shuō)基于云的分析)。
一完成注冊,就應該看到一個(gè)列出您的項目的頁(yè)面。您也可以從這個(gè)頁(yè)面訪(fǎng)問(wèn) API 文檔和其他有用的信息(參見(jiàn)圖 1)。在空閑時(shí),您可以隨便查看這些信息,但是現在開(kāi)始來(lái)創(chuàng )建您的第一個(gè)項目吧。

要在 Titanium 中創(chuàng )建您的第一個(gè)應用程序,只需單擊頂部工具欄中的 New Project 打開(kāi) New Project 窗口即可。在這里,填入關(guān)于您的新應用程序的一些數據點(diǎn)(參見(jiàn) 圖 2):

Titanium 在規定的文件夾中為您的新應用程序創(chuàng )建一個(gè)文件夾。應用程序文件夾將包含某些重要的文件和目錄:
app:// URL 來(lái)指向該文件夾中的文件和資產(chǎn)。現在,確保您設置的初始應用程序是有效的,可以真正被打包的。為了測試這一點(diǎn),單擊 Test & Package 選項卡,然后再單擊 Package 選項卡。
接下來(lái),選擇您想要支持的平臺(就選您正在使用的平臺),選擇一個(gè)安裝器類(lèi)型(現在就選 Bundled)。保持其余選項為圖 3 所示的默認值(例如,您想要應用程序是私有的,不想發(fā)布到用戶(hù))。

單擊 Package Project。幾分鐘之后,您就會(huì )得到一個(gè)可從 Appcelerator 網(wǎng)站下載的軟件包(參見(jiàn)圖 4)。

單擊下載該軟件包,然后安裝。當然,您會(huì )看到的只是一個(gè)空白屏幕,頂部有一行文字 "Welcome to Titanium",因為應用程序 Resources 目錄中的 index.html 文件里僅有這些內容。事實(shí)上,如果您打開(kāi)這個(gè) index.html 文件,會(huì )看到類(lèi)似于清單 1 中的標記。
<html><head></head><body style="background-color:#1c1c1c;margin:0"><div style="border-top:1px solid #404040"><div style="color:#fff;;padding:10px">Welcome to Titanium</div></div></body></html>
您已經(jīng)構建了您的第一個(gè)應用程序,但是它還不是很完美。首先,它外觀(guān)不怎么樣,然后也不做任何有用的事情。所以,我們來(lái)給它添加一些元素,讓它開(kāi)始看起來(lái)像個(gè)應用程序。
打開(kāi)包含您的應用程序的目錄,然后打開(kāi) Resources 目錄。下載一個(gè)您喜歡的 JavaScript 框架(我喜歡的是 jQuery),放入當前目錄中?,F在在編輯器中打開(kāi) index.html 文件并做更改。
首先使用一個(gè) <script> 標記將剛才下載的框架文件綁定到頁(yè)面中。然后刪除 Titanium 自帶的所有額外的內嵌樣式。此時(shí),您的 HTML 標記看起來(lái)應該類(lèi)似于清單 2。
<html><head><script type="text/javascript" src="app://jquery.js"></script></head><body></body></html>
現在添加一些客戶(hù)端代碼,比如說(shuō)執行頁(yè)面上某些動(dòng)態(tài)事件的按鈕。在清單 3 中的例子中,我創(chuàng )建了一個(gè)簡(jiǎn)單的按鈕,單擊它會(huì )提示 jQuery 填入一個(gè)帶有內容的 <div>。
<html><head><script type="text/javascript" src="app://jquery.js"></script><script type="text/javascript">jQuery(document).ready(function() { $("#mybutton").click(function(){ var string = 'Hello there!'; $('#mymessage').html(string); });});</script></head><body><button id="mybutton">click me!</button><div id="mymessage"></div></body></html>盡管這是一個(gè)簡(jiǎn)單的例子,但是您可以看出選項幾乎是無(wú)限制的(參見(jiàn)圖 5)。添加另外一些客戶(hù)端框架、CSS 布局和定制內容,以創(chuàng )建您想要交付給客戶(hù)的應用程序。

跟網(wǎng)站不一樣,您需要進(jìn)行一些規劃,因為您需要打包各個(gè)代碼塊以查看更新。例如,一旦您綁定了一個(gè)發(fā)行版本,就不是那么容易刷新內容更改了,所以要記得預算創(chuàng )建一個(gè)軟件包將花費的時(shí)間,然后再下載它。
例如,如果您要返回去并添加 清單 4 所示的 CSS 樣式:
body { margin:0; padding:0; background:#ccc;}#wrapper{ border:1px solid black; margin:10px auto; width:500px; background:#fff; padding:10px;}然后是一些標記,添加一個(gè) ID 為 wrapper 的 HTML <div>,如清單 5 所示:
<html><style>body { margin:0; padding:0; background:#ccc;}#wrapper{ border:1px solid black; margin:10px auto; width:500px; background:#fff; padding:10px;} </style><head><script type="text/javascript" src="app://jquery.js"></script><script type="text/javascript">jQuery(document).ready(function() { $("#mybutton").click(function(){ var string = 'Hello there!'; $('#mymessage').html(string); });});</script></head><body><div id="wrapper"><button id="mybutton">click me!</button><div id="mymessage"></div></div></body></html>直到運行軟件包進(jìn)程,才能夠看到新的外觀(guān)和感受。這比起您習慣的開(kāi)發(fā)網(wǎng)站時(shí)的速度要慢一些,但是只要記住您在處理什么,就沒(méi)有問(wèn)題。
即使客戶(hù)端只能進(jìn)行這么多更改,也還有對服務(wù)器端代碼的支持。這里您應該將 HTML 文件轉換為 PHP,如果您在構建的應用程序支持 PHP(換句話(huà)說(shuō),您在創(chuàng )建項目時(shí)選中了 PHP 復選框),那么您將能夠插入 PHP 命令。PHP 加上 Titanium 自帶的內置 SQLite 數據庫允許您構建任何種類(lèi)的動(dòng)態(tài)應用程序。下一節進(jìn)一步介紹這些內容并添加 PHP 代碼。
既然基本的工作已經(jīng)完成,下面就可以對您的新應用程序做一些高級的事情了。打開(kāi) Resources 目錄,然后在編輯器中打開(kāi) index.html 文件。開(kāi)始添加 PHP 代碼之前,最好添加一個(gè)會(huì )運行 phpinfo()、指向一個(gè) PHP 文件的鏈接,以便您知道自己在處理什么。我選擇 PHP,因為這是我最熟悉的:您可能想要使用 Ruby 或 Python,這兩種也受支持。
在 HTML 文件中,去掉按鈕并放入一個(gè)到新文件的鏈接 — 一個(gè)將會(huì )調用 phpinfo.php 的鏈接,參見(jiàn)清單 6。
<div id="wrapper"> <a href="phpinfo.php">see PHP info</a></div>
這個(gè) phpinfo.php 文件是最基礎的,只包含一行 PHP 代碼 — 對 phpinfo() 的調用,這個(gè)函數輸出 Titanium 的 PHP 環(huán)境中的每個(gè)變量和設置(參見(jiàn)清單 7)。您可以用 <pre> 標記約束該調用,使得按格式顯示信息更為容易。
<?phpecho phpinfo();?>
一旦完成了源代碼,再回到 Titanium 并創(chuàng )建一個(gè)已更新的軟件包。等待過(guò)程完成,然后下載并安裝這個(gè)軟件包。安裝之后,馬上運行;您應該看到一個(gè)簡(jiǎn)單的頁(yè)面,帶有一個(gè)到 phpinfo.php 文件的鏈接。單擊該鏈接,應該看到圖 6 所示的頁(yè)面。

如您所見(jiàn),Titanium 顯示一個(gè)頁(yè)面,展示了它具有的每個(gè) PHP 配置設置。注意,您具有對 Sessions、SQLite 和 SimpleXML(以及其他有價(jià)值的工具)的支持,并且 Titanium 知道您的本地環(huán)境(例如,WebKit 庫位于哪里,您的 _ENV['HOME'] 設置是什么)。
這當然很好,但是如果您想要利用 PHP 真正做某些工作,又該怎么辦呢?您當然可以創(chuàng )建一些單獨的 PHP 文件以便調用,但是更容易的做法是將您的 PHP 代碼直接嵌入到 HTML 文件中。這樣做的方式是創(chuàng )建使用 text/php type 參數的 <script> 塊(就像創(chuàng )建 JavaScript 塊一樣)并這樣添加 PHP 代碼。
例如,如果您想要創(chuàng )建一個(gè)將兩數相加的簡(jiǎn)單函數并將它放入前面創(chuàng )建的 index.html 文件中,那么您可以通過(guò)一個(gè) JavaScript 塊來(lái)運行它,如清單 8 所示。
<script type="text/php">function php_sum($a,$b){ return $a + $b;}</script><script> alert(php_sum(3,4));</script>圖 7 中可以看到,您可以從基本的 JavaScript 塊運行 PHP 代碼,讓數據從一種代碼到另一種代碼可用,采用的方式可能與您熟悉的 web 開(kāi)發(fā)時(shí)的方式不同。

當然,另一種做法是將 PHP 塊打包到單獨的文件中,并通過(guò)兩種方式之一包含這些文件:通過(guò)常見(jiàn)的 <script> 標記,或者通過(guò)在 <script> 塊中使用 include 命令,如清單 9 所示。
//you can use the script tag//if you use this method, leave your PHP code bare, no <?php block<script type="text/php" src="my_file.php"/> //or you can use a PHP include command inside a script block//if you use this method, surround your code with <?php block<script type="text/php"> include("source.php");</script>至此,您已經(jīng)學(xué)習了足夠的知識,完全可以開(kāi)始構建您自己的 Titanium 應用程序了。學(xué)習了如何安裝工具,利用 HTML 創(chuàng )建基本的界面,甚至添加一些 PHP 代碼和一些 CSS 樣式。從此,您應該能夠利用您作為一個(gè) web 開(kāi)發(fā)人員已經(jīng)具備的技能,添加其他特性,創(chuàng )建出優(yōu)秀的桌面和移動(dòng)應用程序。
聯(lián)系客服