凹凸實驗室:支撐數千萬消費者的小程式開發實踐

稀土君發表於2018-08-24

作為第一批發布的小程式、同時也是大家最熟悉的微信小程式之一,京東購物小程式每天需要支援數千萬的消費者。掘金特意邀請到京東購物小程式背後的一支開發團隊 —— 凹凸實驗室進行專訪,與大家聊聊京東購物小程式的開發實踐,以及對小程式未來發展的看法。

團隊介紹

掘金:先簡單介紹一下凹凸實驗室的團隊情況?

凹凸實驗室: 我們於 2014 年年中成立,現在的名稱是「JDC-多終端研發部」,於 15 年 10 月份推出「凹凸實驗室」品牌,旨在對外輸出京東的前端能力及技術理念。現在團隊 60 人左右,主要負責京東商城主站、微信 / 手 Q 購物兩大業務,提供 Web 前端開發、動畫開發、小程式開發、小遊戲開發等前端開發能力,同時具有 app 開發、後端服務開發等全棧開發能力。

凹凸實驗室:支撐數千萬消費者的小程式開發實踐

掘金:微信小程式開發在團隊內是如何分工的?

凹凸實驗室: 團隊在設定分工的時候,考慮到微信小程式是一個較新的開發平臺,所以小程式開發附屬於前端業務團隊之下。長期來看,是否需要獨立的小程式團隊,基於小程式本身的業務複雜度來判斷相關團隊的獨立性。

其實,在小程式出現之前,京東微信入口已有一個獨立的團隊來負責這個購物平臺的運營工作。後來有了小程式,業務團隊希望基於小程式提供更好的體驗,因而相關團隊就進行了一次「小程式化」。在小程式釋出之初,團隊及時捕獲到小程式的體驗價值,並進行一系列技術預研。同時,我們也迅速聚集 10 人的專案小組,通過一個多月的封閉開發,京東購物小程式趕在第一批小程式釋出。

開發實踐與挑戰

掘金:京東商城業務的技術架構是怎樣的?

凹凸實驗室: 京東商城的整體業務十分複雜,為了程式碼解耦、提高系統魯棒性和開發效率,我們分別開發了一個頁面基類和一個元件基類。在元件化開發方面,早期基於 template 的元件化方案開發體驗較差,元件的引用略顯囉嗦,元件間巢狀還可能引起問題。而在微信團隊提供了新的元件化規範後,各種痛點都得到改善。

架構圖
架構圖

另外在工程化方面,我們配置了一套 Gulp 流程,為開發時的各個階段提供快速有效的自動化服務。

凹凸實驗室:支撐數千萬消費者的小程式開發實踐
Gulp 流程圖

掘金:開發小程式時遇到過哪些挑戰?

凹凸實驗室: 商城的業務邏輯在移動 Web 端已經十分完善,因此業務層面的開發難度不大,更多的問題在於平滑遷移到小程式的平臺上,繞開小程式的限制和問題。其中比較大的幾個挑戰包括:包大小的限制、跳轉層級限制以及請求併發數不可超過 10 個請求的限制。

為了突破請求限制,團隊專門開發了一套閘道器,使用一套通過 websocket 標準的資料流來支援資料傳輸。閘道器主要的功能是對請求進行轉發,使用與原 web 端共用的後臺介面來提供資料服務。

凹凸實驗室:支撐數千萬消費者的小程式開發實踐

此外,在測試這一環節,目前微信小程式尚未給出完善的測試工具,無法編寫 UI 層面的測試用例。所以每次版本迭代,都需要人工介入測試:

  • 自動化測試:每一次程式碼的 commit ,都會執行為小程式定製的 lint 來檢測程式碼是否符合規範
  • 人工測試:具體到業務邏輯則需要測試同學逐步進行驗證

希望微信小程式可以繼續優化測試部分的開發體驗,早日能有一套完整的自動化測試工具。

微信小程式開發生態

掘金:微信小程式是否會在微信生態裡取代 Web 端呢?

凹凸實驗室: 目前來看還不好說,主要看企業對於微信內應用的定位。首先,從體驗上來看,微信小程式的體驗明顯優於網頁。其次,小程式具備完整的開放能力,加上微信社交關係鏈和生態的巨大優勢,必然會成為市場追捧的方向。隨著更多框架效能層面和開發效率、體驗的優化,開放能力不斷完善,業務迭代成本不斷降低,使得企業及開發者對此平臺越來越有信心。

掘金:如何比較微信小程式與 App、Web、PWA、快應用的優劣?

凹凸實驗室:

App vs. 小程式: App有多端平臺的適配問題,而小程式只需要開發一套即可自然跨平臺,而且只有一個應用釋出平臺,發版效率也快於 App。

Web vs. 小程式: 小程式從功能、體驗上皆優於 Web 體驗。

PWA vs. 小程式: PWA 需要對基礎業務做比較大的調整,而且中國的移動生態以 App 為主,而國外的生態還以網頁資訊為基礎,這使得 PWA 更適用於國外市場。

快應用 vs. 小程式: 目前快應用的開發門檻較高,釋出流程繁瑣,且無法實現跨系統。而小程式的持續更新,讓開發者更加信任這個開發平臺的後續發展。

掘金:如何看待微信小程式的未來?

凹凸實驗室: 目前百度、阿里都在推出類似的小程式解決方案,整個業界都在重視各個細分場景的產品體驗。但小程式仍然無法替代 app,小程式有更好的開發體驗和使用體驗,而 app 則是支援比較複雜的業務功能的載體。

期待微信小程式整個平臺更加開放,融入社群更多已有的能力,讓開發者能做的更多。

Taro 的故事

「Taro - 為提升多端開發效率而生」

掘金:最初為什麼要開發 Taro?

凹凸實驗室: 一開始的目標是解決小程式開發中的一些痛點,後來在業務開發中,發現會同時開發 React Native、網站、微信小程式多個終端的切實需求。為了提升多端開發效率,Taro 遵循了 React 的語法規範,已經完整支援了小程式和 Web 端體驗,即將釋出對 React Native 的支援,快應用的支援正在開發中,而其他小程式,諸如百度智慧小程式、支付寶小程式等也都在計劃之中。

掘金:開發 Taro 中有什麼有趣的故事?

凹凸實驗室: 近期,Taro 進行了一次比較大的重構,一開始的 Taro 元件化是使用 Template 來實現的,有很多坑和問題。如今,重新基於小程式原生方案來實現元件化功能,得力於新的元件化方案,目前 Taro 的問題已經大幅減少,Taro 在小程式開發上也更加穩定了。而在這次大型的重構同時,我們還需要不斷解決社群裡提出的問題和反饋,因而就要不斷加班加點地去完成。現在 Taro 的核心有 8 名開發者在維護,還有一些同事會幫忙完善功能。

掘金:Taro 下一步的規劃是怎樣的?

凹凸實驗室: 團隊會繼續以 Taro 為中心完善整個 Taro 生態的建設,例如相容小程式第三方元件庫,支援整個小程式生態、完善 Taro 多端 UI 庫,輸出業務元件庫及電商黃金流程,並不斷支援更多的終端。

凹凸實驗室:支撐數千萬消費者的小程式開發實踐

Taro 的核心開發者李偉濤會在掘金開發者大會 · 微信小程式專場,分享「用 React 開發小程式的探索之路」。

凹凸實驗室:支撐數千萬消費者的小程式開發實踐

「我會在本次大會上圍繞小程式原生開發中的問題和痛點,與你分享 Taro 是如何基於 React 思想、編譯原理、社群既存方案去解決這些問題和通點。 Taro 又是如何從社群中汲取意見和反饋,不斷迭代、從頭重構以適應更多、更復雜的特性需求和業務需求的。聽完本次分享,你會從設計者的角度,更深入的理解 Taro 的設計理念與實現方式。」

專屬福利

掘金開發者大會 ∙ 微信小程式專場現已開始正式報名,現在正在 8 折優惠中。凹凸實驗室聯合掘金為讀者帶來了參與活動的專屬福利:掃碼進入小程式,輸入專屬優惠碼:「auto」,立減 99 元(限量 10 名)!活動中,不僅有乾貨滿滿的技術盛宴,還包眾多福利獎品和價值 299 元的自助午餐哦!

活動資訊:

  • 官網:conf.juejin.im
  • 時間:2018年9月16日(週日)
  • 地點:北京富力萬麗酒店
  • 人數:600 名開發者

票務諮詢

  • 聯絡人:王先生
  • 電子郵箱:ticket@xitu.io
  • 電話 / 微信:18561606818

相關文章