通過Web App和Native App之爭 看如何做技術選型
“Web App和Native App誰才是未來?”這類的討論幾乎成了移動互聯網的月經話題。這兩天,又有朋友跟我說到“Native App必死”的論調,我并不贊同他的觀點,理由很簡單:雖然我們都知道Native App有許多缺點——客戶端的開發工作量大;軟件升級和維護比較麻煩;每次版本更新都需要向官方市場提交審核;開發者需要針對不同的操作系統和不同分辨率的終端進行適配開發工作;服務器端要支持多客戶端,難于擴展。但目前為止,其性能和用戶體驗都很難被Web App取代。同時,Web App還有其他的一些弱點——服務器端的開發工作量大,邏輯復雜;需要在更多設備上進行測試;前端技術還未標準化;難使用設備的特性(傳感器、GPS定位、本地文件系統等)。所以,我認為這兩種解決方案各有千秋,并不存在“誰將戰勝誰”的問題。
雖然討論“誰才是未來”的話題毫無意義,但我比較關心另一個話題:在當前狀況下,針對不同的公司規模,面向不同的應用領域,該如何做技術選型?我們看到,HTML5技術雖然已經火熱許久,但真正利用HTML5技術構建的成功的App相較于Native App而言可謂微乎其微,所以我認為看看那些利用HTML5技術成功的案例是幫助我們思考這個問題最簡單的方法。
我想說的***個案例是Financial Times(金融時報)的FT Web App,它是***個選擇純粹Web App路線的主流新聞媒體。我一直認為,就目前而言,最適合嘗試Web App的應用領域就是在線媒體,因為其特性與Web App的優勢十分貼合:用戶動作簡單(無非是閱讀、收藏、評論這幾樣核心功能)、注重內容呈現、無需做太多的視覺效果、面臨最多的跨平臺問題、與服務器關系密切、需要快速的操作體驗、輕量且易于更新。還有非常重要的一點,媒體的核心價值在于其內容,而在當今為內容付費的成功案例都稀缺的情況下,用戶是絕對不會為這類App的下載付費,而開發一個Native App需要花費較高的成本,我認為對于許多為變現發愁小型媒體而言,這種做法是不太明智的。
FT產品主管在談到他們的Web App時,除了對其以上特性的溢美之詞外,也分享了他們面臨的幾個主要挑戰:1. 目前Web App領域的開發文檔、測試工具都很稀缺,需要自己開發測試工具來測試性能;2. 不同的瀏覽器性能差別很大,使得圖片和視頻呈現效果不一且可能出現一些Bug;3. 許多用戶都是***接觸Web App,需要為用戶做好使用指南;4. 做好離線功能(支持預覽、離線訪問、內容的收藏、下載等),他們在官方博客Tutorial: How to make an offline HTML5 web app, FT style中分享了詳盡的解決方案。
第二個案例是LinkedIn的iPad App,與FT不同的是,LinkedIn并不是一個完全的Web App。而是一個95%的工作由HTML5技術解決,剩下5%的工作(據說只有界面)是依靠Native App完成的,它實際上可以被成為是一個Hybrid App。
LinkedIn之所以選擇在iPad上利用HTML5技術開發應用是因為相較于其他的移動設備,iPad擁有更強大的處理器性能,能夠讓HTML5技術發揮良好的特性,保證整個App的體驗和響應速度。其負責人在接受VentureBeat的采訪時分享了一些他們的經驗:專注于簡潔的設計,通過移除一些不必要的設計來提高響應速度,例如去處圓角和漸變效果等。同時,他們大量使用Node.js來提高服務器的負載能力。
如今,像LinkedIn這種利用Hybrid架構解決方案的團隊越來越多,即將需要使用本地資源、數據和需要高表現力的部分交給Native來完成,其余部分由Web來負責。 這么做一方面能將Web App的許多特性表現的***,另一方面也能保證應用有不錯的響應速度和本地特性。
上面兩個例子中的FT和LinkedIn都是在線的、內容屬性和實時屬性非常強且對效果要求不高的產品。這也是我認為如今最適合嘗試Web App技術的產品類型,而像游戲這種對動畫效果和處理性能要求很高的產品,還沒有在HTML5技術運用上十分成功的案例(已經有一些游戲公司在嘗試Hybrid方案)。所以我想說的是,請拋開對Web App和Native App非黑即白的爭論,這個世界上,從來沒有***的技術或是編程語言,只有最恰當的選擇和與之匹配的解決方案。