4個月原生weex混合開發終結()

Nestor_Gu發表於2018-08-21
  1. 原因
  • 由於一些h5人員方面的原因,新的非主流程需求將全部由app人員開發。然後app的人員已經由15人縮減成ios和android各兩個了。為了應對3個產品各自負責的需求,我們調研了weex和rn。
    • 我們原app已經非常完整,並且新業務都是相對獨立的頁面,顧更專注於頁面的weex更加符合(不建議整個app都使用weex做,RN和Flutter更合適)
    • 我個人在16年中旬(應該是剛開源不久)就關注了,有一定了解。
    • 結合mpvue,可以讓微信小程式和weex共用元件。
    • weex上手簡單,團隊整體更喜歡vue。
    • 雖然網上有很多關於weex有深坑的文章,但我們嘗試後發現對於app開發來說絕大部分不是問題。但weex不適合做整個app。
    • 社群支援相對弱,但我們可以自己造輪子,自己改sdk。
    • 最終我們決定採用weex進行開發。
  1. 目前的使用程度
  • 已經有5個新業務全部使用weex開發,還有12個單獨的weex介面,共34個weex頁面,23個weex元件,3個原生提供的元件,6個moudle提供42個原生app的功能。
  1. 遇到的問題
  • 我們自己使用okhttp封裝的網路庫限制了只能返回確定的資料型別,而weex的IWXHttpAdapter需要返回bytes。
    • 修改網路庫解決
  • 編譯時間過長,預覽導致
    • 開發時通過webpack.dev.conf的filterPage(entrys)進行過濾,通過npm run serve -- --env.page=XX,指定需要預覽的頁面。
  • css展現的ui各端稍有不一致。
  • weex官方ui庫不豐富
    • 一部分使用weex-ui
    • 一部分自己使用vue寫
    • 使用原生ui(地圖等)
  1. 頁面跳轉
  • 我們沒有采用vue-router和weex自帶的navigator模組。而是使用自定義的navigator模組通過原生已經定義好的Scheme跳轉實現(與推送,h5,外部應用跳轉共用一套),無論是調原生還是weex都採用這一套。weex間的跳轉直接帶引數到下一個weex頁面,原生只通過Scheme傳遞Map<String,object>型別的json資料。
  1. 使用
  • 開發:提交程式碼後GitLib通過Webhooks通知jenkins伺服器編譯,app使用jenkins伺服器產生的js連結地址。

  • 線上:使用tag版本產生的js檔案,存放到線上靜態伺服器,app使用線上連結。下版本將支援app本地快取和根據檔案版本更新。

  • 也可以訪問我的個人部落格:blog.yzapp.cn

  • github:github.com/nesror

  • 簡書:www.jianshu.com/u/85e5f9992…

相關文章