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