小程式框架選擇與平臺編譯能力測評
開發者在使用常見的第三方小程式框架(如 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 在進入「檢視」頁面時會提示報錯,在使用真機開啟「檢視」頁面時也會報錯(如下圖)。
當使用真機預覽進入「高階」頁面時,還會遇到底部日曆遮擋的問題。
此外,為了測試 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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 小程式製作平臺或公司,如何選擇呢?
- 小程式多端框架全面測評框架
- BAT小程式均已開放,開發者如何選擇小程式平臺BAT
- 跨平臺編譯編譯
- 小程式框架執行時效能大測評框架
- 介面測試框架選擇框架
- 為什麼有的企業有開發能力,仍然要選擇零程式碼平臺?
- 我與小程式的故事以及小程式框架選型框架
- DevOps 與平臺工程:企業該如何選擇?dev
- cross-plateform 跨平臺應用程式-03-如果只選擇一個框架,應該選擇哪一個?ROSORM框架
- 寫作平臺選擇記
- 如何選擇低程式碼開發平臺,分析平臺的解決方案
- 如何選擇微信小程式開發框架?2018年更新微信小程式框架
- 企業如何選擇低程式碼開發平臺
- Go跨平臺交叉編譯Go編譯
- Rust 跨平臺與條件編譯總結 2019.1.3Rust編譯
- 小程式反編譯教程編譯
- 應該如何選擇CDP平臺?
- 小程式開發選擇公司等於選擇人
- 低程式碼應用程式開發平臺的5種選擇
- .NET探索平臺條件編譯編譯
- 小程式多端框架全面測評:chameleon、Taro、uni-app、mpvue、WePY框架ChameleonAPPVue
- 小程式原理之: WXSS 編譯編譯
- 如何挑選擇合適的低程式碼開發平臺
- 如何選擇最佳物聯網平臺?
- 小程式,選擇顏色,去水印
- 選擇低程式碼開發平臺的五大要求
- 為什麼企業要選擇低程式碼開發平臺?
- 企業如何選擇開源的零程式碼開發平臺
- 如何反編譯微信小程式?編譯微信小程式
- 物聯網路卡平臺該如何選擇
- 測試平臺系列(55) 引入AceEditor(程式碼編輯器)
- 談選擇、選擇對應的結果與玩家規劃能力的重要性
- 小小里程碑,開始對主流平臺進行編譯測試編譯
- ffmpeg iOS平臺編譯 指令碼註釋iOS編譯指令碼
- 編譯OpenCV——ubuntu x86_64平臺編譯OpenCVUbuntu
- Golang在各平臺下如何交叉編譯Golang編譯
- 【模型評估與選擇】sklearn.model_selection.KFold模型