本文將結合闊懸在 iWeb 杭州站沙龍現場的分享《支付寶小程序在 mPaaS 中的深度集成實踐》,介紹支付寶小程序框架的設計原理,以及如何在 mPaaS 體系中的深度集成支付寶小程序。小程序
分享內容將從如下兩個方面展開:後端
近來,小程序儼然成爲了移動互聯網的新熱點。繼 2017 年初微信正式推出微信小程序後,各個大廠陸續發佈了各自的小程序 —— 支付寶小程序、百度小程序、頭條小程序,小程序成爲了各家移動互聯網生態佈局的重要一環。微信小程序
經過小程序生態能夠引入大量的外部服務,不只豐富了平臺的能力,並且能夠爲平臺帶來大量的用戶流量,從而使得平臺具有無限的潛能。api
支付寶小程序是一種全新的開發模式,它運行在支付寶客戶端,能夠被便捷地獲取和傳播,爲終端用戶提供更優的用戶體驗。爲方便小程序的開發者,支付寶小程序具備相似微信小程序的 DSL 和開發環境,下降小程序開發者的學習成本。瀏覽器
1. 基礎需求微信
小程序的本質需求是讓第三方開發者能夠接入,使得第三方開發的小程序能夠在平臺級應用中運行。網絡
對於這個需求,最簡單的實現方案是:讓外部開發者開發純 H5 應用,在應用的架構
H5 容器裏打開,容器提供一些原生的接口供H5使用。好比在支付寶和微信上的「滴滴出行」以 H5 的形式運行在各自的平臺中,這種模式看似還不錯,可是實際上這種簡單的方案不能知足這兩個小程序的基礎需求:框架
2. 框架概述運維
爲了實現小程序並知足上述的小程序的兩個需求,小程序框架應運而生。咱們先看下小程序框架大圖,自上而下看。
目前支付寶的小程序使用的是 React 版,螞蟻內部的其餘 App 有在使用 React Native 版的小程序。
3. 應用層框架
咱們一塊兒看下小程序應用層框架。每一個小程序的代碼分爲兩部分——邏輯處理和視圖渲染,分別運行在 worker (js 引擎) 以及 render (渲染層)中。
可見該框架能夠作到,JS 邏輯代碼與頁面渲染分離並行執行,不會出現 JS 代碼執行時卡住頁面渲染的狀況,進而提高渲染性能。多個頁面能夠共享一個 JS 運行環境,數據能夠很方便地共享,整個小程序生命週期裏共享同一個上下文,更接近 App 的開發體驗。小程序的模板樣式是自定義的格式,這樣能夠作到開發時使用固定的 DSL,不依賴底層的渲染引擎,這樣引擎的優化升級不會形成上層的小程序代碼的不兼容,而且渲染行爲是徹底是可控的。
4. Native SDK
咱們再看 Native 層,在支付寶中是由 Nebula H5 容器負責實現,它爲小程序提供 Native 能力,爲小程序提供的包管理、後臺保活等功能。
5. 小結
如今讓咱們回到前面提到的兩個小程序的基本需求,體驗和管控。咱們看下框架是如何實現這兩個需求的。對於體驗需求,主要有如下幾點:
對於管控需求,主要有兩點:
1. 支付寶小程序與 mPaaS
小程序這麼有優點,那可否把支付寶小程序放到其餘 APP 中運行呢?答案是確定的,藉助 mPaaS,小程序技術不只在螞蟻金服內部使用,也可以提供給外部用戶使用。
首先簡單介紹下什麼是 mPaaS,mPaaS 全稱是 Mobile Platform as a Service,即移動端的 PaaS 。做爲螞蟻金服首創的移動研發平臺,它源於支付寶近 10 年的移動技術的沉澱,爲移動開發、測試、運營及運維提供雲到端的一站式解決方案,能有效下降技術門檻、減小研發成本、提高開發效率,協助生態夥伴快速搭建穩定高質量的移動 App。
2. mPaaS 小程序
再來看下什麼是 mPaaS 小程序,它是在支付寶小程序的基礎上作了瘦身、去依賴的小程序 SDK,爲了能便捷的輸出給其餘 App 快速地搭建出小程序平臺。它保持和支付寶小程序同樣的模板樣式和通用 API,僅僅少許的像受權這樣的開放的 API 須要客戶自定義開發。藉助 mPaaS 小程序,能夠作到一套小程序代碼,在支付寶和本身的 App 上雙端投放和運行,甚至能夠構建出本身的小程序生態體系。
這裏和你們分享下 mPaaS 小程序在其餘 App 中集成時可能須要解決的問題:
3. mPaaS 小程序 IDE
小程序的開發除了可以使用支付寶小程序開放平臺提供的 IDE,還可使用 mPaaS 版的小程序 IDE。經過 mPaaS 版的 IDE 能夠導出本地的小程序包,後續在 mPaaS 發佈平臺中使用這個本地包直接發佈。將來,小程序 IDE 將會與 mPaaS 直接打通,在 IDE 中能夠直接完成 mPaaS 小程序的開發、測試和發佈這一系列的開發運維體驗。
4. mPaaS MDS
小程序技術的一個基礎的能力,就是小程序發佈系統。mPaaS 小程序的發佈服務是由 mPaaS 的移動發佈系統(MDS)提供的。MDS 提供多種發佈策略,可以在正式發佈以前進行多種類型的灰度測試。MDS 提供增量差分包更新能力,可減小更新包的體積,在移動端網絡不穩定場景中發揮優點。
目前,mPaaS 小程序已在衆多政務項目中落地服務,幫助政務小程序在支付寶和自有 App 雙端投放運行。相同的業務功能使用小程序實現,在支付寶和自有 App 中可進行共用,能顯著地下降開發成本,作到業務的快速上線及動態更新。
若是想要進一步瞭解 mPaaS 小程序,能夠複製地址到瀏覽器中打開: t.cn/ELBlvEr
關於小程序框架的優化思路或具體實踐,若是你有任何疑問或建議,歡迎隨時和咱們一同交流。
往期閱讀
《開篇 | 模塊化與解耦式開發在螞蟻金服 mPaaS 深度實踐探討》
《支付寶客戶端架構解析:Android 客戶端啓動速度優化之「垃圾回收」》