Site icon Soul & Shell Blog

Web App 究竟是悲慘世界?還是美麗新世界?

雲霄飛車 HTML 5html5_vs_native

Web App 這幾年來引起不少話題,從 Steve Jobs 的 I love HTML 5 到 Mark Zuckerberg 的 I hate HTML 5,對於多數支持 HTML 5 Web App 的開發者,心情可是大起大落。好在伴隨著 Smart TV 與 Web OS 的給力與加持,打了不少強心針,使得 Web App 還不至於要裝上葉克膜才能維繫生命。Web App 未來的發展何去何從?我們也想繼續看下去...

返樸歸真 - 薑還是老的辣

最近有不少 Mobile App 開發者,陸續放棄 Web App 轉向擁抱 Native,無非就是垢病於 Web App 的開發限制與執行速度。當開發者回到 Native App 時,彷彿重新體驗到科技的進步與真諦!會頭看看 Web App 與曾經辛苦走過的路,Web App 總是被評的一無是處。Native 強大的彈性與執行速度,最終讓許多開發還是回到 Native 的身旁,但我們也不可否認 Web App 仍然保留著優異的跨平台能力。

跨平台 - 說好的跨平台神話

Web App 真的跨平台嗎?我們設計的 Web 在眾多瀏覽器下常常都不怎麼跨平台了,複雜多元的行動裝置該怎麼真正的跨平台!?我們都了解 Web App 主流的技術是 HTML 5 與 CSS 3 偶爾再加上 PhoneGap 的加持 (Hybrid App),這完美的架構確實有效擴充了 Web 的能力。但回到現實中,由於 HTML 5 API 與 CSS 3 在不同瀏覽器的支援程度本來就皆不相同 (HTML5 Tester),更不用說使用 PhoneGap 自行實作的 Plugin 是用 Native 完成,至此也漸漸開始失去了 Web App 完全跨平台的能力。但我相信以 W3C 的規範來實作 Web App,至少還保有 50% 以上的跨平台能力。

談效能 - 兔子跑的比烏龜快是天經地義

Web App 需透過瀏覽器執行,比上 Native 確實走了更遠的路,慢是應該的、是正常的。話說天下武功無堅不摧、唯快不破!如果您想要 App 跑得快,選 Native 就對了,這沒什麼好爭論的。近年來瀏覽器廠商,致力於改善 Web 執行效率的問題,我確信未來 Web 的速度絕不可能超越 Native,但是未來可以透過許多技巧讓 Web 執行速度更接近 Native,例如像是 asm.js 這樣的技術。我認為 Web App 並不會因為效能問題而走向死亡,或許就像 Java 的命運一樣 (雖然 Java 跨平台能力優秀多了),想想當初的 Java 有多慢、現在的 Java 依然被廣泛被使用。

希望 - 壓不倒的最後一根稻草

這貌似不怎麼牛的 Web App,幹嘛還用它?是的,效能問題與不完全跨平台確實幾乎讓 Web App 走向失敗,但是想想,Web App 還有那「50%+」的跨平台能力啊!如果您是個資深的前端工程師,那麼使用 Web 進行 App 開發是最熟悉不過的方式了,前提是要「資深」!不然新潮的 SPA + HTML 5 + CSS 3 + JavaScript + 效能優化技術就夠你學了。

改善使用者體驗 - 極致與再設計

由於 Web App 上述所提及的垢病,加上現今太多的 Web App 沒有經過細部優化與校調就推出市場,讓使用者累積許多不良的使用體驗,造成太多人對於 Web App 的誤解。事實上,如果將 Web App 調整到一定的水準,其實可以帶來更好的使用者體驗,但確實需要很多開發經驗、技巧與時間來完成。像是快取、改善畫面重繪機制、SPA、程式碼優化、DOM 調整、預先載入等等技巧,透過設計再造與細節的調整,逐步將 Web App 拉近與 Native 同樣的使用者體驗。曾經 Web App 被開發者笑稱為「假 App」,也曾經 Web App 讓開發者誤以為是 Native App,這些結果是取決於開發者對產品的堅持,而不是技術!

信念 - Web App 再出發

世界上沒有最好的技術,只有最恰當的技術。天時地利人和,選擇最適合自己的技術才是最重要的!如果你是個牛逼的開發者,並且也是熟悉各種平台的開發高手,那麼選用 Native 絕對是首選;但如果像本人這種技術一般般、品質一般般、開發速度一般般的開發者,加上沒有錢多、人多、技術強種種因素,那麼「50%+」跨平台的優點確實還蠻吸引我的。不可否認我確實熟悉與熱愛 Web 技術 (當然也會寫點 Native Code),或許只是技術迷思搞出的心理作用,我始終對 Web App 抱有一絲希望,剩下的信念是繼續走下去的動力,因為我相信,所以我願意。你呢?

Exit mobile version