小程式框架選擇與平臺編譯能力測評

FinoBird發表於2022-02-16

開發者在使用常見的第三方小程式框架(如 taro,kbone,uniapp)時,會發現各家框架廠商都宣稱透過自己的框架能編譯出不同平臺下最好用,最流暢的小程式,開發者受限於精力與時間不夠,也無法對其進行足夠仔細地辨別與區分。

使用不同的編譯框架編譯出不同平臺的小程式 DEMO,並在 iOS 與 Android 裝置中進行實際體驗對比,針對 「小程式的穩定性,框架支援度,列表渲染效能,作業系統支援度,元件支援度與跨平臺性」進行綜合對比,幫助開發者找出最適合自己的小程式平臺與框架。

一、測試裝置與環境

本次測試中,我們使用了 FinClip 日常測試環境中的三款裝置機型,分別是:

  • iPhone XS(系統版本為 iOS 13.5)

  • 三星 SM-J3300(系統版本為 Android 9)

  • 榮耀 50 JLH-AN00(系統版本為 Android 11)

本次使用的宿主 App 與版本如下:

  • 微信(iOS 端版本為9.0.17,Android 端版本為 8.0.18)

  • 支付寶(iOS 端版本為 10.2.53,Android 端版本為 10.2.53)

  • 今日頭條(iOS 端版本為 8.6.2,Android 端版本為 8.6.6)

  • 百度(iOS 端版本為 13.2,Android 端版本為 13.2)

  • FinClip App(iOS 端版本為 2.35.2,Android 端版本為 2.35.3)

本次測試使用的 DEMO 如下:

  • taro-ui,kbone,uniapp 官方 demo

二、測試流程

為了保證最終能夠得到公平一致的測試結果,我們使用瞭如下的評測方式:

相同的測試流程才能保證公平的測試結果

三、DEMO 與列表渲染測試

Taro

我們下載了官方的示例 DEMO 檔案,並在各個 IDE 中進行編譯預覽。

首先是在 IDE 中進行編譯展示,透過上圖可以看出各家小程式平臺對於該 DEMO 都能夠進行正常的渲染與體驗,但是在實際測試過程中我們發現,支付寶小程式 IDE 在進入「檢視」頁面時會提示報錯,在使用真機開啟「檢視」頁面時也會報錯(如下圖)。

使用支付寶 IDE 進入「檢視」介面時會報錯

當使用真機預覽進入「高階」頁面時,還會遇到底部日曆遮擋的問題。


此外,為了測試 Taro 對於列表的渲染能力,還使用了 這個專案(Msparis 專案基於 Taro,構建了一個時裝衣櫥的專案演示,涉及了一個電商平臺完整的業務邏輯和功能點),分別使用真機在「首次渲染,更新列表」的情況下進行多次測試,得出結果如下。

所屬平臺

iPhone 首次渲染取 3 次平均值

iPhone 更新列表取 5 次平均值

三星更新列表取 3 次平均值

三星更新列表取 5 次平均值

榮耀更新列表取 3 次平均值

榮耀更新列表取 5 次平均值

微信小程式

14.054ms

17.935ms

20.525ms

19.164ms

124.699ms

22.677ms

FinClip

27.488ms

63.901ms

70.667ms

81.4ms

19.667ms

37.2ms

支付寶小程式

17.67ms

18ms

87.33ms

61.6ms

31.33ms

46.2ms

頭條小程式

真機及執行報錯

真機執行失敗

真機執行失敗

百度智慧小程式

5ms

5.4ms

無法正常渲染

1ms

2.2ms

值得一提的是, 在使用三款手機進行真機測試時,頭條小程式均無法正常執行,使用三星手機開啟百度智慧小程式時,也無法正常渲染


kbone

下載了由 DCloud 提供的 kbone 示例 DEMO 檔案,並在 IDE 中進行編譯預覽。

僅有微信開發者工具與 FIDE 可完成小程式編譯

同樣,我們分別使用真機在「首次渲染,更新列表」的情況下進行多次測試,得出結果如下。

所屬平臺

iPhone 首次渲染取 3 次平均值

iPhone 更新列表取 5 次平均值

三星更新列表取 3 次平均值

三星更新列表取 5 次平均值

榮耀更新列表取 3 次平均值

榮耀更新列表取 5 次平均值

微信小程式

0.78ms

1.48ms

1.627ms

1.372ms

1.67ms

5.8ms

FinClip

236ms

650ms

6.33ms

6.8ms

2.67ms

4.2ms

由於 kbone 僅支援微信小程式語法,因此僅在微信開發者工具與  FIDE 中進行了測試,支付寶官方提供了 Antmove,但嘗試後發現依然無法編譯。

uniapp

下載了官方的示例 DEMO 檔案,並透過 uniapp 進行跨端編譯,按照不同平臺的要求輸出對應的小程式,並在各個 IDE 中進行編譯預覽。

除了支付寶小程式無法編譯,都可以正常執行

在 IDE 中進行編譯展示時,除了支付寶小程式 IDE 會提示編譯失敗以外,剩下的小程式 IDE 都完成了對應的編譯與預覽操作。此外,我們也使用了 uniapp 對於列表渲染進行多次測試,測試方式依然是使用真機在「首次渲染,更新列表」的情況下進行多次測試,得出結果如下。

所屬平臺

iPhone 首次渲染取 3 次平均值

iPhone 更新列表取 5 次平均值

三星更新列表取 3 次平均值

三星更新列表取 5 次平均值

榮耀更新列表取 3 次平均值

榮耀更新列表取 5 次平均值

微信小程式

520ms

417.33ms

3355.67ms

1360.17ms

383.67ms

249.88ms

FinClip

179.33ms

120.88ms

1290.33ms

997.29ms

317ms

350ms

支付寶小程式

517.33ms

242.25ms

3021.33ms

1063.75ms

570ms

282ms

頭條小程式

125.33ms

92.13ms

開啟失敗

323ms

263.86ms

百度智慧小程式

114.33ms

82.12ms

816.67ms

834.88ms

134.67ms

236.76ms

四、支援元件測試

此外,還根據對應平臺開發者文件中,支援的小程式元件進行了對比,所得情況如下:

元件

微信小程式

支付寶小程式

FinClip

頭條小程式

百度智慧小程式

cover-image圖片檢視


cover-view文字檢視


match-mediamedia query 匹配檢測節點




movable-areamovable-view 的可移動區域

movable-view可移動檢視容器

page-container頁面容器




scroll-view可滾動檢視區域


share-element共享元素




swiper滑塊容器檢視

swiper-itemswiper 元件內容


view檢視容器

icon圖示元件

progress進度條

rich-text富文字

text文字

button按鈕

checkbox多選專案

checkbox-group多項選擇器

editor富文字表及其



form表單

input輸入框

keyboard-accessory鍵盤頂部工具欄




label改進表單元件可用性

picker底部彈起滾動選擇器

picker-viewer嵌入頁面的滾動選擇器

picker-view-column滾動選擇器子項


radio單選專案

radio-group單項選擇器

slider滑動選擇器

switch開關選擇器

textarea多行輸入框

functional-page-navigator跳轉至外掛功能頁





navigator頁面連結

audio音訊



camera系統相機


image圖片

live-player實時音影片播放


live-pusher實時音影片錄製




video影片

voip-room多人音影片對話





map地圖

canvas畫布

adBanner 廣告



ad-custom原生模板廣告





official-account公眾號關注元件





open-data展示微信開放資料



web-view承載網頁容器

native-component小程式中客戶端原生元件





aria-component無障礙訪問



navigation-bar頁面導航條配置節點




page-meta頁面屬性配置節點



與微信功能相同的元件數量

51

32

44

34

38

webrtc-audio實時音訊





webrtc-video實時影片





lottie動畫





map高階定製渲染





lifestyle關注生活號





contact-buttpn智慧客服





error-view異常檢視





UI元件


46




營銷元件


9




tabs標籤欄





tab-item標籤欄子項





animation-video透明影片動畫





animation-view Lottie動畫





ar-cameraAR 相機





rtc-room實時音視訊通話房間





rtc-room-item實時音視訊通話畫面





follow-swan關注小程式





inline-payment-panel內嵌支付元件





like點贊





one-step-interaction一站式互動





comment-list評論列表





comment-detail評論列表





swan-sitemap小程式索引頁





ECharts圖表





搜尋元件





推薦元件





輪播圖元件





線索元件





雲加速服務





地址元件





發票元件





元件總數

51

92

46

34

60

五、綜合對比

根據前文測試與對比結論,我們分別基於「穩定性,小程式框架支援度,列表渲染效能,作業系統支援度,元件支援度,跨平臺性」進行綜合考量與對比。

穩定性

根據三種機型的測試體驗,在頭條小程式與百度智慧小程式中,安卓機型的執行效果是不穩定的,尤其在頭條小程式中,Taro 框架的列表展示 DEMO 三臺機器均無法正常開啟。 而百度小程式則會出現在安卓低端機型中無法正常開啟的情況。

? 根據本次測試結果,穩定性排序如下:

微信小程式 = FinClip = 支付寶小程式 > 百度智慧小程式 > 頭條小程式

小程式框架支援度

可以看出各平臺都已經支援了在 Taro 和 uniapp 框架下的小程式,但個別功能依然存有 Bug。在頭條小程式中可以執行簡單的 DEMO ,但複雜 DEMO 安卓端幾乎全軍覆沒。

而在 kbone 框架中, 只有微信小程式與 FinClip 支援執行,且都能正常執行體驗。當我們使用 Antmove 工具轉換後, 依然無法在支付寶小程式中正常執行。

? 根據本次測試結果,框架支援度排序如下:

微信小程式 = FinClip > 支付寶小程式 = 百度智慧小程式 > 頭條小程式

列表渲染效能

根據測試資料,微信小程式、 FinClip、 支付寶小程式在列表渲染效能上是比較接近的。出乎意料的是百度智慧小程式在這些 DEMO 測試中,渲染耗時最少。頭條小程式則因表現不穩定暫不參與排序。

? 根據本次測試結果,渲染效能排序如下:

百度智慧小程式 > 微信小程式 = FinClip = 支付寶小程式

作業系統支援度

根據測試結果整體來看, 當前所有小程式在 iOS 作業系統中的體驗是優於Android 作業系統的,我們後續將會引入鴻蒙系統進行測試對比。

元件支援度

考慮到當前市場中微信小程式的領軍地位,我們以微信小程式元件對標支援度作為了評比標準之一。

? 根據本次測試結果,元件支援度排序如下:

微信小程式 >  FinClip > 百度智慧小程式 > 頭條小程式 > 支付寶小程式

? 而如果以各平臺中元件數量進行排序,排序如下:

支付寶小程式 > 微信小程式 > 百度智慧小程式 > FinClip > 頭條小程式


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70013942/viewspace-2855876/,如需轉載,請註明出處,否則將追究法律責任。

相關文章