作者 | 伍杏玲

出品 | CSDN(ID:CSDNnews)

【CSDN 編者按】目前小程序的生態衆多,有微信小程序、支付寶小程序、快應用、百度智能小程序、今日頭條小程序等,應運而生的小程序多端框架也有很多,例如滴滴的Chameleon、美團的Mpvue、京東的Taro、騰訊的WePY等。

這些框架雖說實現“多端兼容”,但不是全部兼容的,由於快應用與小程序有一定的差異性,據瞭解,上述的幾款開源框架均尚未支持快應用。

目前有這樣的一個“神器”:可同時支持快應用和小程序的開源框架,實現一處編寫多處運行的轉譯,並且支持拆庫開發、按需打包業務代碼等功能。

它便是由去哪兒網大前端團隊研發的娜娜奇(nanachi)小程序快應用轉譯框架。

下面由CSDN(ID:CSDNnews)協同去哪兒網技術學院專訪去哪兒網技術總監、公共技術部大前端負責人黃慶(暱稱:Neo)去哪兒網公共技術部前端架構師鍾欽成(暱稱:司徒正美),一起來解開這個多端神器nanachi的神祕面紗。

快應用小程序一鍵轉譯

CSDN:nanachi框架的特性是如何?對比其他公司的框架,優點是什麼呢?

Neo:nanachi擁有許多特有的功能:

第一,智能WebView化,這樣可以減輕小程序體積的壓力。衆所周知,小程序對體積的要求比較敏感,我們的應用擁有很多業務模塊,所以需要將一些非重點的業務掛在WebView上。

第二,nanachi能支持快應用。據瞭解,上述幾款框架均未支持。快應用是基於12大廠商推出的,相信未來快應用市場將對我們尤其重要,目前快應用也給我們帶來不少流量與收入。

目前,我們支持平臺框架轉譯,譬如你將一個標準的微信小程序框架源碼,放在我們框架裏,可一鍵轉譯爲快應用,當然還支持轉換成其他平臺框架。實現原理是:先將原生微信小程序代碼轉換成nanachi代碼,再由nanachi轉換成其他各種小程序、快應用的原生代碼。

第三,內置自動理點與上傳功能,方便改良產品,其他框架沒有這個功能。還有可以做自動測試迴歸,因爲現在的小程序都是多平臺,如果每次修改完都需要回歸測試的話,人力成本會很高。

這對於我們完善工具鏈是很重要的,因爲很多框架只關注開發這塊的使用,但據我們之前的經驗來看,開發這塊滿足後,還需要關注這個程序有沒有問題,測試能不能提高速度,用戶又哪些交互行爲等,這些其實是很重要的,所以做工具鏈要做完整,而不能說只關注開發這一塊,這是遠遠不夠的。

CSDN:爲什麼沒有采用上述的幾個開源框架,而選擇自主研發框架呢?

Neo:目前去哪兒網主要是React技術棧,從這個角度來看,京東的Taro和我們更吻合一些。其他是基於Vue的,(如果用的話)我們需要進行較大的改造。

目前來看,小程序還在快速發展中,我們平時也密切關注業界技術發展狀況。不管是京東的Taro還是美團的Mpvue,GitHub上面的Issue還比較多,(他們)處理的週期也較長。

而且有一些框架對某些重要的平臺支持力度也有限。我們常說,業務不等人。所以去哪兒網需要有適合自己的業務需要的框架,這是我們做nanachi的原因。

多業務部門發佈小程序時,如何協同?

CSDN:去哪兒網有很多個部門,那麼在小程序的發佈上,目前各部門的協同工作是如何進行的呢?

司徒正美:我們有一個叫chaika的工具,能讓各個事業部自行開發自己的業務,放在不同的Git倉庫中,最終chaika會將這些模塊合併成一個完整的小程序,一鍵發佈,其中合併和發佈的過程不到1分鐘。

目前去哪兒網小程序的模塊有以下分類:

主模塊:主要功能是整個小程序的一些全局配置和全局變量等, 如: package.json 中的 modules 是小程序所有模塊的依賴配置。

公共模塊:這是小程序中其他模塊公用的模塊, 包含一些工具類代碼和自定義組件等。之所以把主模塊和公共模塊拆成兩個模塊, 主要是我們考慮到公共模塊也可以依賴到不同的小程序中,但主模塊算是單個小程序中特有的, 所以要區別對待。

業務模塊:這是業務相關的業務邏輯代碼, 完全獨立可拔插。

前端多生態,後端如何做統一

CSDN:目前去哪兒網已對接微信小程序、支付寶小程序、快應用、百度智能小程序,那麼後端服務是如何實現的呢?是一後端對應多前端,還是一後端對應一前端的方式呢?

司徒正美:目前是一套前端代碼與一套後端代碼加不同的登錄支付邏輯。

CSDN:相比App,對比這幾種小程序生態,開發難點各是什麼?

司徒正美:目前除了微信小程序,其他小程序的非常不成熟,擁有各種奇怪的Bug或限制,網上的踩坑資料也很少。

CSDN:您對這幾種生態有什麼看法呢?nanachi的未來規劃是如何呢?

Neo:能帶來流量都要儘量試探。未來框架的發展還是以覆蓋平臺爲主,目前和今日頭條小程序、QQ小程序的合作正在洽談中。

CSDN:對比微信小程序、支付寶小程序、快應用、百度智能小程序,去哪兒網在各生態的提供的功能服務有很大差異,例如在微信端提供的服務和App的差不多,而在支付寶、百度僅提供基礎服務,這樣部署是基於什麼標準衡量呢?

Neo:這是歷史原因,畢竟微信小程序出來早,我們公司在它上面已經迭代了許多功能。其他小程序是最近半年纔開始開發,因此功能少些。但以後所有小程序與快應用都是同一套代碼,功能會盡量保持一致。

團隊開發資源分配

CSDN:目前是團隊是如何分工的呢?是一個團隊對應一個端,還是一個團隊負責所有小程序端呢?

司徒正美:一個團隊負責所有端,各個業務線會有專員開發業務代碼。

CSDN:小程序和App目前的開發資源投入分配大致是怎樣的?

Neo:小程序投入的開發人員不到20人吧,App能達上百人。目前還是以App爲主,小程序先佔坑。

CSDN:去哪兒網小程序上有好多入口模塊,請問每個功能項是寫死的還是可配置的?

司徒正美:我們首頁是通過一個叫Qconfig的服務實現,可以在線上自由地變更首頁,用它靈活地上線或下線已有的頻道

所以你可以看到,我們在微信小程序和快應用、支付寶、百度等渠道上線的功能模塊有所不同。這都是可以自由配置的。

衆多矩陣小程序集成,如何做容災

CSDN:在去哪兒網小程序裏嵌入其他好幾個子小程序,如果某個子程序掛了,該如何容災呢?

司徒正美:小程序是基於多WebView,掛了不會影響其他業頁的。還有可以通過上面所有的Qconfig服務能將有問題的入口給及時下掉,無需重新發布上線的。

據瞭解,Taro、uni-app的技術團隊均在進行兼容快應用的研發,而先拔頭籌的去哪兒網nanachi也不斷優化框架,加強框架轉譯的準確度。

那麼作爲小程序/快應用的開發者,你對這幾個框架有什麼看法呢?歡迎來留言哦。

嘉賓簡介:

黃慶,去哪兒網技術總監,公共技術部大前端負責人。曾先後任職高德地圖、阿里巴巴(北京)。作爲移動互聯網老兵,從最早的iOS/Android,到後面的H5/Hybrid,以及React Native都有涉獵。目前專攻小程序,對該領域保有極大的樂觀態度。

鍾欽成,網名司徒正美,擁有十年純前端經驗,著有《Java框架設計》一書,去哪兒網公共技術部前端架構師。愛好開源,擁有mass , Avalon, nanachi等前端框架。目前在主導公司的小程序、快應用的研發項目。

框架傳送門:

https://rubylouvre.github.io/nanachi/

聲明:該文觀點僅代表作者本人,搜狐號系信息發佈平臺,搜狐僅提供信息存儲空間服務。
相關文章