從 1.3 beta 版本開始支持快應(yīng)用開發(fā)本章節(jié)主要講解快應(yīng)用端 環(huán)境安裝-開發(fā)-調(diào)試-打包-發(fā)布 原理及流程
Taro 支持快應(yīng)用端開發(fā)
調(diào)試器是一個 Android 應(yīng)用程序,下載調(diào)試器 APK 詳見資源下載
在手機上安裝并打開調(diào)試器,按鈕功能如下:
安裝成功后如下圖所示:
較新的系統(tǒng)版本中內(nèi)置平臺正式版,開發(fā)調(diào)試平臺新功能可使用平臺預(yù)覽版
平臺預(yù)覽版存在以下優(yōu)缺點:
下載安裝成功后,在手機調(diào)試器中點擊切換運行平臺至org.hapjs.mockup,即可在平臺預(yù)覽版上安裝運行 rpk 包
在手機上安裝完調(diào)試器后,就可以執(zhí)行 Taro 的快應(yīng)用編譯命令開始編譯了
$ taro build --type quickapp --watch
在編譯完成后會遇到如下輸出結(jié)果
Taro 在將代碼編譯完后,會自動下載快應(yīng)用的容器模板,同時安裝好相關(guān)的依賴,隨后就會自動啟動快應(yīng)用的服務(wù),此時,只需要使用手機上安裝的調(diào)試器掃碼就能直接在手機上進(jìn)行調(diào)試了。
https://doc.quickapp.cn/tutorial/ide/overview.html
在 Taro 編譯適配快應(yīng)用需要進(jìn)行一些配置,適配的具體原因可以參考Taro和快應(yīng)用配置差異,通過在項目根目錄下添加 project.quickapp.json 大體的配置項可以參考快應(yīng)用官方文檔的 manifest 配置,而 Taro 中支持以下配置:
屬性 | 類型 | 默認(rèn)值 | 必填 | 描述 |
---|---|---|---|---|
package | String | - | 是 | 應(yīng)用包名,確認(rèn)與原生應(yīng)用的包名不一致,推薦采用 com.company.module 的格式,如:com.example.demo |
name | String | - | 是 | 應(yīng)用名稱,6 個漢字以內(nèi),與應(yīng)用商店保存的名稱一致,用于在桌面圖標(biāo)、彈窗等處顯示應(yīng)用名稱 |
icon | String | - | 是 | 應(yīng)用圖標(biāo),提供 192x192 大小的即可 |
versionName | String | - | 否 | 應(yīng)用版本名稱,如:"1.0" |
versionCode | Integer | - | 是 | 應(yīng)用版本號,從1自增,推薦每次重新上傳包時versionCode+1 |
minPlatformVersion | Integer | - | 否 | 支持的最小平臺版本號,兼容性檢查,避免上線后在低版本平臺運行并導(dǎo)致不兼容;如果不填按照內(nèi)測版本處理 |
features | Array | - | 否 | 接口列表,絕大部分接口都需要在這里聲明,否則不能調(diào)用,詳見每個接口的文檔說明 |
config | Object | - | 是 | 系統(tǒng)配置信息,詳見說明 |
subpackages 1040+ | Object | - | 否 | 定義并啟用分包加載,詳見說明 |
可以看出,相比于快應(yīng)用官方的配置項,Taro 中支持的配置項缺少了 router 與 display 配置,這是因為這兩項配置在 Taro 編譯時會根據(jù)用戶代碼直接生成,不再需要額外配置。
而為了讓用戶更加方便進(jìn)行快應(yīng)用相關(guān)配置,Taro 增加了一些額外的配置項,例如:
customPageConfig 是為了讓用戶可以為每個頁面配置快應(yīng)用獨有的 filter 與 launchMode 它直接配置在 project.quickapp.json 中,它是一個對象的類型,其 key 值即為頁面路徑,與 入口文件 中 config 下 pages 數(shù)組中配置的頁面路徑保持一致,常見例子如下
{
"customPageConfig": {
"pages/index/index": {
"filter": {
"<action>": {
"uri": "<pattern>"
}
},
"launchMode": "standard"
}
}
}
一個典型的 project.quickapp.json 配置參考例子
? Taro已經(jīng)可以編譯出可在微信/百度/支付寶/字節(jié)跳動小程序、H5、React-Native運行的代碼,近期也增加了快應(yīng)用的支持,那必不可少的一步就是組件庫的轉(zhuǎn)換,眾所周知小程序開發(fā)離不開三大要素——界面表現(xiàn)(結(jié)構(gòu)、外觀)層、邏輯處理層與系統(tǒng)接口層(網(wǎng)絡(luò)、存儲與媒體等),其中界面結(jié)構(gòu)指的就是組件庫,那立足于微信小程序的Taro組件和快應(yīng)用組件有何異同?Taro是如何處理這些差異的?且看下文.
? 小程序官網(wǎng)放出來了一個體驗小程序用來展示它的組件 / API / 云開發(fā)能力,快應(yīng)用官方也出了一個能力展示的開源項目sample,乍看好像差不多,其實兩者之間的差異還是很多的,由于Taro組件基本上是微信小程序組件變?yōu)槭鬃帜复髮懼笮纬傻模旅嬉晕⑿判〕绦蚪M件為基準(zhǔn),看看快應(yīng)用的組件能力如何,首先看視圖容器:
微信小程序組件 | 功能說明 | 對應(yīng)快應(yīng)用組件 | Taro如何模擬 |
---|---|---|---|
cover-image | 覆蓋在原生組件之上的圖片視圖 | 無 | 用image模擬,丟失bindload和binderror事件 |
cover-view | 覆蓋在原生組件之上的文本視圖 | 無 | 用div模擬,丟失scroll-top屬性 |
movable-area | movable-view的可移動區(qū)域 | 無 | 用div模擬,丟失scale-area屬性 |
movable-view | 可移動的視圖容器,在頁面中可以拖拽滑動 | 無 | 用div模擬,丟失所有屬性 |
scroll-view | 可滾動視圖區(qū)域 | 無 | 用div模擬,丟失所有屬性 |
swiper | 滑塊視圖容器 | swiper | 指示點顏色可通過樣式補齊、丟失previous-margin、easing-function等屬性, |
swiper-item | 僅可放置在swiper組件中,寬高自動設(shè)置為100% | 無 | 用text或image模擬,丟失item-id屬性 |
view | 視圖容器 | 無 | 用div模擬,丟失所有屬性 |
再來看基礎(chǔ)組件和表單組件:
微信小程序組件 | 功能說明 | 對應(yīng)快應(yīng)用組件 | Taro如何模擬 |
---|---|---|---|
icon | 圖標(biāo) | 無 | 用div模擬,丟失type\size\color屬性 |
progress | 進(jìn)度條 | progress | 只保留了percent屬性 |
rich-text | 富文本 | richtext | nodes屬性做一次AST映射到變量中,丟失space屬性 |
text | 文本 | text | 少有的比微信豐富的組件,模擬之后丟失所有屬性 |
名稱 | 功能說明 | 對應(yīng)快應(yīng)用組件 | Taro如何模擬 |
---|---|---|---|
button | 按鈕 | 無 | 用div模擬,丟失所有屬性 |
checkbox | 多選項目 | 無 | 用input模擬,丟失color屬性,仿真度高 |
checkbox-group | 多項選擇器,內(nèi)部由多個checkbox組成 | 無 | 用div模擬,丟失所有屬性 |
editor | 富文本編輯器,可以對圖片、文字進(jìn)行編輯 | 無 | 用richtext模擬,丟失所有屬性 |
form | 表單 | 無 | 用div模擬,丟失所有屬性 |
input | 輸入框 | input | 丟失passwd、bindinput等屬性 |
label | 用來改進(jìn)表單組件的可用性 | label | for屬性對應(yīng)target,但不支持子組件模擬 |
picker | 從底部彈起的滾動選擇器 | picker | 丟失省市選擇器類型,轉(zhuǎn)換規(guī)則隨type變化,模擬復(fù)雜 |
picker-view | 嵌入頁面的滾動選擇器 | 無 | 用div模擬,丟失所有屬性 |
picker-view-column | 滾動選擇器子項 | 無 | 用div模擬,丟失所有屬性 |
radio | 單選項目 | 無 | 用input模擬,丟失color屬性,仿真度高 |
radio-group | 單項選擇器,內(nèi)部由多個 radio 組成 | 無 | 用div模擬,丟失所有屬性 |
slider | 滑動選擇器 | slider | 丟失color、block-size等屬性 |
switch | 開關(guān)選擇器 | switch | 丟失color、disabled等屬性 |
textarea | 多行輸入框 | textarea | 只保留了placeholder、maxlength屬性 |
最后是不常用到的導(dǎo)航、媒體、地圖和畫布組件對比
名稱 | 功能說明 | 對應(yīng)快應(yīng)用組件 | Taro如何模擬 |
---|---|---|---|
functional-page-navigator | 僅在插件中有效,用于跳轉(zhuǎn)到插件功能頁 | 無 | 用div模擬,丟失所有屬性 |
navigator | 頁面鏈接 | 無 | 用div模擬,丟失所有屬性 |
名稱 | 功能說明 | 對應(yīng)快應(yīng)用組件 | Taro如何模擬 |
---|---|---|---|
audio | 音頻 | 無 | div+slider+接口方式模擬,僅保留基本功能 |
camera | 系統(tǒng)相機 | camera | 僅保留device-position、flash、binderror屬性 |
image | 圖片 | image | 僅保留src屬性 |
live-player | 實時音視頻播放 | 無 | 用div模擬,丟失所有屬性 |
live-pusher | 實時音視頻錄制 | 無 | 用div模擬,丟失所有屬性 |
video | 視頻 | video | 只保留src、autoplay、poster、controls和muted屬性 |
名稱 | 功能說明 | 對應(yīng)快應(yīng)用組件 | Taro如何模擬 |
---|---|---|---|
map | 地圖 | map | 仿真度較高,屬性可以做到一一映射 |
名稱 | 功能說明 | 對應(yīng)快應(yīng)用組件 | Taro如何模擬 |
---|---|---|---|
canvas | 畫布 | canvas | 同名但一個是組件,一個是通過API模擬的,只能用div模擬 |
名稱 | 功能說明 | 對應(yīng)快應(yīng)用組件 | Taro如何模擬 |
---|---|---|---|
web-view | 承載網(wǎng)頁的容器 | 無 | 通過web組件仿真 |
ad | Banner 廣告 | 無 | 用div模擬,丟失所有屬性 |
official-account | 公眾號關(guān)注組件 | 無 | 用div模擬,丟失所有屬性 |
open-data | 用于展示微信開放的數(shù)據(jù) | 無 | 用div模擬,丟失所有屬性 |
從上面的數(shù)據(jù)來看,快應(yīng)用支持的組件還很不完善,如果之前使用Taro開發(fā)微信小程序的話,想直接轉(zhuǎn)到快應(yīng)用是很難的(還有樣式的嚴(yán)格限制),看到這里你可能會對快應(yīng)用有點失望,但是快應(yīng)用在手機端的原生渲染性能是微信小程序不能比的,下面的快應(yīng)用特色組件會讓你刮目相看:
1.使用list+list-item實現(xiàn)流暢的滾動列表
2.新鮮的氣泡組件popup
3.想實現(xiàn)蓋樓功能? 看看這個堆疊組件stack
4.快應(yīng)用也有tabbar,tabs / tab-bar/tab-content三劍客
5.外賣應(yīng)用必不可少的星級評分組件rating
以上就是Taro組件和快應(yīng)用組件的一個概覽對比,總結(jié)來說,如果想實現(xiàn)多端一致,請盡量在Taro里面使用仿真度高的組件,比如Swiper、Image、Text、Input、Label、Picker、Video、Map、Camera、Canvas、Slider、Textarea等,隨著快應(yīng)用不斷完善,相信這些差異會逐漸補齊的。
更多建議: