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