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