專訪騰訊Web前端高級工程師曾健:Node.js還是H5?
原創隨著移動互聯網業務的不斷豐富,無論是原有的NativeApp還是傳WebApp都無法滿足業當下的務需求,隨之兼具“Native App良好用戶交互體驗”和“Web App跨平臺開發”的雙重優勢的HybridApp成為各大互聯網公司的新寵。
為什么是Hybrid App
市場上一些主流移動應用都是基于Hybrid App的方式開發,比如工商銀行、百度搜索、東方航空等。
在曾健看來,一個APP的核心功能應該通過Native的方式去實現,以此保證用戶體驗的穩定性。而一些非核心功能—需要頻繁更新、優化的用H5來實現,在很大程度上提高了研發效率。
騰訊應用寶作為國內最大的APP分發平臺之一,日均分發量達到1.2億,其主要的幾個table—首頁、發現、游戲……都是通過Native來實現的。而類似娛樂、讀書以及禮包中心等小的功能則通過H5實現。
由于上一輪的企業信息化在PC端大多選擇了B/S架構,這也和Web App通過手機瀏覽器訪問的方式無縫過渡。然而WebApp在3D特效、頻繁的輸入輸出體驗上并不夠優秀。曾健告訴記者:“比如下拉刷新、左右滑動這些用H5實現還是比較困難的。所以在需要這種體驗時我們就會選用更加合理的技術。
在平面結構布局以及穩定性方面,曾健認為:“布局是H5天生的優勢。在穩定性方面H5的WebView會導致APPCrash提高,因此我們把Webview做成一個獨立的進程,就算它Crash也不會影響AppCrash,然后在這個基礎上再做一些統計上報。另外就是利用QQ瀏覽器X5團隊的內核來做,這樣Crash率會相對好一些。
最近兩三年出現了許多開源的H5框架,許多框架都被打上“優秀”,“不可不錯過”的標簽。而曾健告訴筆者:“現在手機屏幕大小有限,需要展示的東西并不多,要么是一個列表要么是一兩個模塊,那種復雜的框架或者模塊管理,都不是特別好的使用場景,而在拉數據展示或者直接取源生js可能更好一些。所以在做純粹H5相關的時候未必要使用別人的框架,你只要思考他是怎么實現的,然后把自己想要的東西這么做就可以了。
Node.js還是H5?
Node.js還是H5這可能是許多前端工程師都難以抉擇的問題,有人認為Node.js不夠穩定,不夠成熟,有人認為H5不過是舊瓶裝新酒而已。在曾健說:”騰訊的一些團隊在使用Node.js,但是沒有大規模使用。而阿里,百度已經有一些業務已經在用了。
node.js給前端開發提供一種新的方向,在一些成功的實踐中可以看到,它對于研發效率的提升的作用是不可磨滅的。但是在做一些線上業務時,工程師除了把它做出來以外,還要關心一些運維上的東西;比如服務器掛了,硬盤掛了……這對于工程師的要求會大大提高,有很多方面的東西需要進行自我補充,才能把線上服務做起來。“
他還指出:”雖然Node.js只需要一套js代碼,前后臺就都可以跑起來,從而提升研發效率。并且在高并發服務時也有其自身的優勢。但它的在于核心數據存儲方面還是需要C++來做,在大量訪問時還是C++比較優秀。”
小結:
無論是NativeApp還是HybridApp又或者Node.js和H5都是用來開發的技術手段。總有人說這樣的一句話,技術沒有好壞高低,只要能實現功能就是好的技術。否則再優秀的技術不再合理的場景下使用都無法達到最優秀的效果。