快應(yīng)用端開發(fā)流程

2020-05-12 17:47 更新
從 1.3 beta 版本開始支持快應(yīng)用開發(fā)本章節(jié)主要講解快應(yīng)用端 環(huán)境安裝-開發(fā)-調(diào)試-打包-發(fā)布 原理及流程

簡介

Taro 支持快應(yīng)用端開發(fā)

安裝

搭建快應(yīng)用環(huán)境

手機安裝調(diào)試器

調(diào)試器是一個 Android 應(yīng)用程序,下載調(diào)試器 APK 詳見資源下載

在手機上安裝并打開調(diào)試器,按鈕功能如下:

  • 掃碼安裝:配置 HTTP 服務(wù)器地址,下載 rpk 包,并喚起平臺運行 rpk 包
  • 本地安裝:選擇手機文件系統(tǒng)中的 rpk 包,并喚起平臺運行 rpk 包
  • 在線更新:重新發(fā)送 HTTP 請求,更新 rpk 包,并喚起平臺運行 rpk 包
  • 開始調(diào)試:喚起平臺運行 rpk 包,并啟動遠(yuǎn)程調(diào)試 注意:若打開調(diào)試器無法點擊按鈕,請升級手機系統(tǒng)到最新版本或安裝平臺預(yù)覽版

安裝成功后如下圖所示:

img

手機安裝平臺預(yù)覽版

較新的系統(tǒng)版本中內(nèi)置平臺正式版,開發(fā)調(diào)試平臺新功能可使用平臺預(yù)覽版

平臺預(yù)覽版存在以下優(yōu)缺點:

  • 優(yōu)點:迭代速度快,可立即體驗平臺新功能
  • 缺點:實現(xiàn)與真實的運行環(huán)境存在差異,對廠商服務(wù)和第三方服務(wù)的支持存在缺陷 平臺預(yù)覽版是一個 Android 應(yīng)用程序,下載平臺預(yù)覽版 APK 詳見資源下載

下載安裝成功后,在手機調(diào)試器中點擊切換運行平臺至org.hapjs.mockup,即可在平臺預(yù)覽版上安裝運行 rpk 包

開發(fā)調(diào)試

在手機上安裝完調(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)試了。

使用 IDE

https://doc.quickapp.cn/tutorial/ide/overview.html

快應(yīng)用配置

在 Taro 編譯適配快應(yīng)用需要進(jìn)行一些配置,適配的具體原因可以參考Taro和快應(yīng)用配置差異,通過在項目根目錄下添加 project.quickapp.json 大體的配置項可以參考快應(yīng)用官方文檔的 manifest 配置,而 Taro 中支持以下配置:

屬性類型默認(rèn)值必填描述
packageString-應(yīng)用包名,確認(rèn)與原生應(yīng)用的包名不一致,推薦采用 com.company.module 的格式,如:com.example.demo
nameString-應(yīng)用名稱,6 個漢字以內(nèi),與應(yīng)用商店保存的名稱一致,用于在桌面圖標(biāo)、彈窗等處顯示應(yīng)用名稱
iconString-應(yīng)用圖標(biāo),提供 192x192 大小的即可
versionNameString-應(yīng)用版本名稱,如:"1.0"
versionCodeInteger-應(yīng)用版本號,從1自增,推薦每次重新上傳包時versionCode+1
minPlatformVersionInteger-支持的最小平臺版本號,兼容性檢查,避免上線后在低版本平臺運行并導(dǎo)致不兼容;如果不填按照內(nèi)測版本處理
featuresArray-接口列表,絕大部分接口都需要在這里聲明,否則不能調(diào)用,詳見每個接口的文檔說明
configObject-系統(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組件和快應(yīng)用組件差異剖析

? 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-areamovable-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ǔ)組件和表單組件:

基礎(chǔ)組件

微信小程序組件功能說明對應(yīng)快應(yīng)用組件Taro如何模擬
icon圖標(biāo)用div模擬,丟失type\size\color屬性
progress進(jìn)度條progress只保留了percent屬性
rich-text富文本richtextnodes屬性做一次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)表單組件的可用性labelfor屬性對應(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)航、媒體、地圖和畫布組件對比

導(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組件仿真
adBanner 廣告用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)用不斷完善,相信這些差異會逐漸補齊的。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號