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