HTML 5+CSS3攜手實(shí)現(xiàn)移動(dòng)應(yīng)用開發(fā)的瓶頸
PC的早期階段,也是傳統(tǒng)的C/S模式居多,后進(jìn)化到B/S模式,并產(chǎn)生了SaaS、云計(jì)算等概念和應(yīng)用。從客戶端進(jìn)化到瀏覽器***好處是客戶端無需更新,減少了大量的更新成本,只需服務(wù)器端進(jìn)行更新。這也是為什么現(xiàn)在流行WebQQ, google docs, photoshop網(wǎng)頁版的原因。現(xiàn)在同時(shí)很多軟件廠商也在制作他們的Web版本,國(guó)內(nèi)的一些ERP廠商也開始了這條道路。iPhone、Android的巨大成功揭開了移動(dòng)互聯(lián)網(wǎng)的大幕,互聯(lián)網(wǎng)企業(yè)都想在移動(dòng)互聯(lián)網(wǎng)的的巨大市場(chǎng)中分得一杯羹。游戲、sns、微博、視頻、本地生活服務(wù)都在大力發(fā)展移動(dòng)互聯(lián)網(wǎng),推出了自己的app。
mobie native app指使用手機(jī)官方提供的SDK和開發(fā)語言開發(fā)的手機(jī)客戶端軟件,它能夠很好的使用手機(jī)提供的一些接口來操作手機(jī)的軟硬件資源。隨著HTML 5和css3的流行和Webkit對(duì)HTML 5和css3的較好支持,很多人開始使用HTML 5和css3來制作移動(dòng)應(yīng)用。如前所述,使用Web方式制作移動(dòng)應(yīng)用***的好處是,客戶端無需更新,并且數(shù)據(jù)顯示很多手機(jī)用戶不是經(jīng)常更新他的app程序,同時(shí)相對(duì)于native app,Web方式修改app的界面的成本更低一些。所以說,對(duì)于對(duì)界面的靈活性有較高要求的app,比較傾向于用Web方式實(shí)現(xiàn)移動(dòng)應(yīng)用。
Android和iPhone都提供了Webview的控件,這個(gè)控件實(shí)質(zhì)是一個(gè)Webkit瀏覽器內(nèi)核,用于解析html、css、js代碼。所以,native app可以調(diào)用Webview空間來展示我們的Web頁面。同時(shí),由于對(duì)css3的較好支持,native那種絢麗的界面就可以用html+css較好的實(shí)現(xiàn)出來,達(dá)到逼真的native app的效果。
但是,Web實(shí)現(xiàn)移動(dòng)應(yīng)用有一些瓶頸。以下是我在項(xiàng)目實(shí)戰(zhàn)中碰到的,如果各位看官有好的解決方案,請(qǐng)不吝賜教。
其一,根據(jù)百度移動(dòng)互聯(lián)網(wǎng)發(fā)展趨勢(shì)報(bào)告2010Q4,iPhone下下載一個(gè)1.407k的網(wǎng)頁,建立連接耗時(shí)1.35s左右,傳輸耗時(shí)0.15s左右。這樣,導(dǎo)致app在建立連接的時(shí)候,屏幕處于白屏狀態(tài)。也就是說這個(gè)app在一秒多的時(shí)間內(nèi),完全處于白屏狀態(tài),再加上3G、GPRS網(wǎng)絡(luò)的不穩(wěn)定,有時(shí)候等待app響應(yīng)需要幾秒甚至1幾秒的時(shí)間,這對(duì)于速度就是生命的移動(dòng)應(yīng)用來說,無疑是個(gè)致命的缺陷。
其二,有人說,native app也需要建立tcp連接,同樣需要耗時(shí)這么長(zhǎng)時(shí)間。很對(duì),那么目前常用的解決方案是什么呢。開機(jī)畫面+loading圖片,有了這兩個(gè),程序不會(huì)處于假死狀態(tài),用戶擁有耐心繼續(xù)等待。那么,Web app是否也能這樣做呢。首先,程序打開同樣顯示開機(jī)畫面,畫面結(jié)束后切換界面(Webview),Webview如果無loading圖片依然是在建立連接,依然處于白屏狀態(tài)。因?yàn)槲覀儫o法在開機(jī)畫面的時(shí)間內(nèi)對(duì)程序進(jìn)行預(yù)加載。然后,使用native方式在Webview外面蒙上一層,上面放上loading圖片,但是Webview沒有提供Web頁面開始渲染的接口,指提供了Web頁面load完成的接口。也就是說,如果通過native方式在Webview上放置一個(gè)loading圖片的話,那么這個(gè)圖片指能在頁面完全加載完消失,這樣也會(huì)影響用戶體驗(yàn)。這里再提供一種方式,實(shí)現(xiàn)這種loading圖片的效果:放置一個(gè)靜態(tài)頁面在本地,點(diǎn)擊打開靜態(tài)頁面,無需建立連接。而后通過ajax方式請(qǐng)求數(shù)據(jù)來替換頁面內(nèi)容。這種方式,也是Nokia widget的實(shí)現(xiàn)方式,但是這種方式的效率比較低下。
其三,難以實(shí)現(xiàn)本地存儲(chǔ)。本地存儲(chǔ)是HTML 5的一個(gè)重要成果之一,但是,基于Android存在多版本系統(tǒng)。Android低版本中的Webkit對(duì)HTML 5和css3支持的并不好。簡(jiǎn)單的兩個(gè)例子是:input type="number"會(huì)導(dǎo)致低版本Android的Webkit直接crash,css3的圓角在低版本的Android Webkit中也會(huì)出現(xiàn)明顯裂縫。現(xiàn)在常用的HTML 5向后兼容方案是通過javascript+css+html來模擬HTML 5的一些特性,但過多的js存在于移動(dòng)應(yīng)用中會(huì)不會(huì)得不償失。
個(gè)人覺得,移動(dòng)互聯(lián)網(wǎng)的發(fā)展趨勢(shì)一定也是從C/S模式向B/S模式轉(zhuǎn)變。但面臨的困難就是,手機(jī)端的瀏覽器更多,對(duì)Web標(biāo)準(zhǔn)的支持也不盡相同,適配各種分辨率的手機(jī)屏幕也是讓人很崩潰的一件事情。相信以后的移動(dòng)互聯(lián)網(wǎng)也將適應(yīng)現(xiàn)在的格局:Web方式瀏覽信息,app方式游戲,工具等。



















