解讀四大移動web應用開發框架真相
譯文【51CTO譯文】近來關于新的移動網頁框架及移動平臺存在不少爭論。平心而論,這些工具在條款內容方面的混亂與模糊也是造成大家誤解的原因之一。我希望通過幾條簡短的評述來盡量清理這種認識層面上的混亂狀態。
網頁移動應用程序并不等同于本地移動應用程序
許多人認為Titanium及PhoneGap與Sencha Touch及jQuery Mobile屬于競爭對手關系。事實上它們并不是同一類事物。我敢肯定在拋出自己的觀點后,一定會有人對我進行駁斥。不過網頁移動應用程序更應該被看作一類網站,正如Basecamphq.com或是Twitter.com那樣。一款網頁移動應用程序運行于瀏覽器之上,而且其所調用的資源幾乎都是遠程的、存儲于服務器端的。當然不排除有些信息也會出現本地存儲的情況,但歸根結底,它的本質是網站應用程序。
本地應用程序運行于我們的設備上,其全部資源都安裝在我們的本地設備中。本地應用程序使用該設備的平臺、語言以及特殊的本地API以與設備接駁。比方說我們無法在網頁移動應用程序中運行NSString,因為只有本地應用程序才能訪問本地資源,而網頁移動應用程序做不到這一點。
“那么它們之間到底有什么區別呢?”區別如下:
Sencha Touch 與 jQuery Mobile
它們具備網頁移動框架。我們可以使用這些技術以創建基于網頁的移動應用程序。它們無法訪問任何本地API。它們二者的運行都基于JavaScript。并且盡管它們是以完全獨立的方式處理類似的問題,但其仍然具有共同點,即它們為移動頁面服務。
大家可以在PhoneGap及Titanium上使用Sencha Touch與jQuery Mobile。如果我們能夠接受將html/js作為自己的本地應用程序,還可以將PhoneGap或Titanium嵌入瀏覽器中并將其放在應用程序在線商店或市場中。我想這可能正是誤解的根源。將Sencha Touch或jQuery Mobile進行本地化包裝并不能使其成為真正的本地應用程序。該過程只是使其在外觀上像是本地應用程序而已。我們可能從PhoneGap或Titanium中的API上獲得過一些功能,但這仍然不一定可以被稱為“本地”應用程序。它們充其量只能看作是運行在本地設備上的網頁應用程序。這種將網頁技術引入本地化領域的應用技術相當了不起。
PhoneGap 與 Titanium
PhoneGap及Titanium與Sencha Touch及jQuery Mobile之間并沒有太多相似之處。事實上,我可以說得直白一些——PhoneGap與Titanium之間也并不完全相似。當然它們二者都允許大家自由分配本地或類本地型應用程序。它們也都不需要為Sencha Touch或jQuery Mobile準備額外的“創建支持”。為什么?因為它們所支持的設備自帶瀏覽器。請記住,Sencha Touch與jQuery Mobile是運行在瀏覽器上的。因為PhoneGap及Titanium都允許我們在特定設備的瀏覽器中運行程序,所以它們其實是通過這種方式實現了對Sencha Touch及jQuery Mobile的支持。
PhoneGap與Titanium之間最大的不同在于它們所提供的功能。PhoneGap的服務內容更像是一種依附于瀏覽器的外殼,它表現得近似于本地應用程序,但本質上卻是html/JavaScript應用程序。Titanium則通過“頁面預覽”實現了完全相同的功能,但卻更進一步,為Cocoa Touch在瀏覽器之外提供了大量的本地API。根據我的觀察,這兩款應用程序在在線商店中有95%都并不是基于網頁運行的。
在Titanium上我們通過JavaScript進行編碼、利用Titanium自身提供的獨特API。最終的結果是,應用程序在運行當中占用的是本機性能以及本地用戶界面等等。概括來說:我們用JavaScript編碼,而其實際運行卻基于Objective-C(這里指的是iOS類應用程序)。
我仍然對“徹底終止本地應用”所獲得的贊揚之聲持懷疑態度。在為瀏覽器及設備分別制作過應用程序之后,我認為將二者相結合才是正確的選擇,且極具發展空間。了解了各種技術之間的差異,我想這對于搞清各類工具的本質應該有所助益。