# 發(fā)布上線
在考慮要上線發(fā)布到正式環(huán)境時(shí),我們一般會(huì)關(guān)注版本覆蓋和穩(wěn)定性問題,對(duì)于這兩個(gè)問題,我們提供了完備的解決方案。
# 版本覆蓋
由于 Skyline 是在微信較高版本支持,那么是否低版本就完全運(yùn)行不了小程序了?答案是否定的。為了保證線上小程序能可靠運(yùn)行,可任取以下其中一種策略
提高「基礎(chǔ)庫(kù)最低可用版本」,設(shè)置為 Skyline 所支持的版本,該策略意味著放棄低版本用戶。
兼容好 WebView,我們會(huì)在不支持 Skyline 的版本自動(dòng)降級(jí)為 WebView 渲染。
由于 Skyline 所支持的 CSS 子集是遵循 Web 標(biāo)準(zhǔn)的,因此在樣式方面切到 WebView 渲染也能正確渲染,此外對(duì)于 Skyline 新增的特性,與小程序其它新增的接口類似,低版本需做好兼容,但我們?cè)诓糠痔匦葬槍?duì) WebView 做了兼容處理,具體參考以下表格:
| 特性 | WebView 兼容性 | 低版本兼容性 |
|---|---|---|
| worklet 動(dòng)畫 | 已兼容 | 需自行做好兼容 |
| 手勢(shì)系統(tǒng) | 相當(dāng)于空節(jié)點(diǎn) | 需自行做好兼容 |
| 自定義路由 | 無需兼容(無動(dòng)效) | 無需兼容(無動(dòng)效) |
| 共享元素 | 無需兼容(無動(dòng)效) | 無需兼容(無動(dòng)效) |
| scroll-view 按需渲染 | 無需兼容(無優(yōu)化) | 無需兼容(無優(yōu)化) |
| scroll-view 新增屬性和事件 | 不兼容 | 需自行做好兼容 |
| grid-view | 已兼容 | 需自行做好兼容 |
| sticky-section/header | 不兼容(可手動(dòng)加上 position: sticky 兼容) | 不兼容(可手動(dòng)加上 position: sticky 兼容) |
# 穩(wěn)定性
一般而言,代碼變更后需要上線發(fā)布時(shí),為了保證線上的穩(wěn)定性,我們都會(huì)選擇灰度發(fā)布,對(duì)于新增 Skyline 相關(guān)代碼的情況也不例外,因此我們提供了完備的灰度方案。
- 通過 We 分析 AB 實(shí)驗(yàn)進(jìn)行灰度。
Skyline 默認(rèn)是需要經(jīng)過 We 分析的 AB 實(shí)驗(yàn)的,也就是小程序新版本發(fā)布后,默認(rèn)還是以 WebView 運(yùn)行,需要在 We 分析的 AB 實(shí)驗(yàn)的「小程序基礎(chǔ)庫(kù)實(shí)驗(yàn)」逐步放量。需要特別留意的是,當(dāng) AB 實(shí)驗(yàn)的流量分配到 100% 時(shí),并不代表是全量,而是 Skyline 和 WebView 各 50%,若要全量的話,需要先結(jié)束實(shí)驗(yàn)再選擇全量某一個(gè)實(shí)驗(yàn)組。
- 通過小程序版本管理中的發(fā)布灰度。
若小程序已經(jīng)過充分測(cè)試,無需再進(jìn)行 AB 實(shí)驗(yàn)的話,我們也提供了以下配置項(xiàng),可在 app.json 或 page.json 配置上,使 Skyline 不經(jīng) AB 實(shí)驗(yàn)而默認(rèn)打開。一般來說,sdkVersion 與 iosVersion+androidVersion 選其一填寫即可。
"rendererOptions": {
"skyline": {
"disableABTest": true,
"sdkVersionBegin": "3.0.1", // 基礎(chǔ)庫(kù)最低版本
"sdkVersionEnd": "15.255.255", // 填最大值,否則之后的新版本會(huì)不生效
}
}
"rendererOptions": {
"skyline": {
"disableABTest": true,
"iosVersionBegin": "x.y.z", // iOS 微信最低版本
"iosVersionEnd": "15.255.255", // 填最大值,否則之后的新版本會(huì)不生效
"androidVersionBegin": "x.y.z", // 安卓微信最低版本
"androidVersionEnd": "15.255.255", // 填最大值,否則之后的新版本會(huì)不生效
"ohosVersionBegin": "1.0.5", // HarmonyOS 微信最低版本
"ohosVersionEnd": "15.255.255" // 填最大值,否則之后的新版本會(huì)不生效
}
}