skyline-overview
Skyline 渲染引擎概览
适用场景
- 初次了解 Skyline 渲染引擎
- 评估是否迁移到 Skyline
- 查看 Skyline 版本更新日志
- 了解与 WebView 的差异和兼容性
- 获取迁移步骤和最佳实践
核心概念
Skyline 是什么?
Skyline 是微信小程序的新一代渲染引擎,相比 WebView 有以下优势:
| 对比项 | WebView | Skyline |
|---|---|---|
| 渲染线程 | 与 JS 逻辑同线程 | 独立渲染线程 |
| 页面内存 | 每页一个 WebView | 共享渲染实例 |
| 首屏性能 | 较慢 | 快 66%+ |
| 光栅化 | 异步分块 | 同步(无白屏) |
| 页面栈限制 | 最多 10 层 | 无限制(连续 Skyline 页面) |
环境要求
| 平台 | 最低版本 | 基础库版本 |
|---|---|---|
| Android | 微信 8.0.40+ | 3.0.2+ |
| iOS | 微信 8.0.40+ | 3.0.2+ |
| HarmonyOS | 微信 1.0.10+ | 3.11.3+ |
| 开发者工具 | Stable 1.06.2307260+ | - |
快速开始配置
必需配置(app.json)
{
"renderer": "skyline",
"lazyCodeLoading": "requiredComponents",
"componentFramework": "glass-easel",
"rendererOptions": {
"skyline": {
"defaultDisplayBlock": true,
"defaultContentBox": true,
"tagNameStyleIsolation": "legacy",
"enableScrollViewAutoSize": true,
"keyframeStyleIsolation": "legacy"
}
}
}
页面配置(page.json)
{
"navigationStyle": "custom",
"disableScroll": true
}
⚠️ MUST: Skyline 不支持原生导航栏,必须设置
navigationStyle: custom并自行实现导航栏。
文档索引
根据需求快速定位(路径相对于 references/):
| 我想要... | 查阅文档 |
|---|---|
| 了解 Skyline 架构和优势 | introduction/overview.md |
| 查看支持的特性 | introduction/features.md |
| 查看性能对比数据 | performance/comparison.md |
| 开始迁移项目 | migration/getting-started.md |
| 处理兼容性问题 | migration/compatibility.md |
| 发布上线指南 | migration/release.md |
| 查看更新日志 | changelog/changelog.md |
| 检测 Skyline 支持 | api/getSkylineInfo.md |
| 预加载 Skyline 环境 | api/preloadSkylineView.md |
强制规则
MUST(必须遵守)
- 配置完整:app.json 必须包含
renderer、lazyCodeLoading、componentFramework三项 - 自定义导航:所有 Skyline 页面必须设置
navigationStyle: custom - 局部滚动:使用
scroll-view实现滚动,禁止依赖全局滚动 - 文本组件:纯文本必须用
<text>组件包裹 - 预加载:跳转 Skyline 页面前调用
wx.preloadSkylineView()
NEVER(禁止行为)
- NEVER 使用原生导航栏配置(Skyline 不支持)
- NEVER 依赖
Page.onPageScroll事件(使用 scroll-view 的滚动事件替代) - NEVER 在 Skyline 页面使用
web-view组件 - NEVER 假设所有 CSS 属性都支持(参考 WXSS 支持文档)
迁移检查清单
配置检查
- app.json 添加
renderer: "skyline" - app.json 添加
lazyCodeLoading: "requiredComponents" - app.json 添加
componentFramework: "glass-easel" - app.json 添加
rendererOptions.skyline配置 - 页面 json 添加
navigationStyle: "custom" - 页面 json 添加
disableScroll: true
代码检查
- 实现自定义导航栏组件
- 全局滚动改为 scroll-view 局部滚动
- 纯文本用
<text>包裹 - 检查 WXSS 属性支持情况
- 测试原生组件(map/canvas/video)显示
发布检查
- 配置 We 分析 AB 实验(灰度发布)
- 测试 WebView 降级兼容性
- 低版本微信表现正常
判断当前渲染引擎
JS 方式
Page({
onLoad() {
// 页面/组件实例上有 renderer 属性
console.log(this.renderer) // 'skyline' 或 'webview'
}
})
API 方式
// 异步方式
wx.getSkylineInfo({
success(res) {
console.log(res.isSupported) // 是否支持 Skyline
console.log(res.version) // Skyline 版本号
}
})
// 同步方式
const info = wx.getSkylineInfoSync()
console.log(info.isSupported, info.version)
性能优化提示
预加载 Skyline 环境
// 在可能跳转到 Skyline 页面的页面中
Page({
onShow() {
// 延迟调用避免阻塞当前页面
setTimeout(() => {
wx.preloadSkylineView()
}, 500)
}
})
长列表优化
<!-- 列表项必须作为 scroll-view 直接子节点 -->
<scroll-view type="list" scroll-y>
<view wx:for="{{list}}" wx:key="id">{{item.name}}</view>
</scroll-view>
<!-- 启用样式共享 -->
<scroll-view type="list" scroll-y>
<view wx:for="{{list}}" wx:key="id" list-item>{{item.name}}</view>
</scroll-view>
相关技能
| 场景 | 推荐技能 | 说明 |
|---|---|---|
| 配置详解 | skyline-config |
JSON 配置项完整说明 |
| 样式开发 | skyline-wxss |
WXSS 支持与差异 |
| 组件开发 | skyline-components |
组件使用指南 |
| 动画开发 | skyline-worklet |
Worklet 动画系统 |
| 路由开发 | skyline-route |
自定义路由和转场 |
References 目录结构
references/
├── api/
│ ├── getSkylineInfo.md
│ └── preloadSkylineView.md
├── changelog/
│ └── changelog.md
├── introduction/
│ ├── component-support.md
│ ├── features.md
│ └── overview.md
├── migration/
│ ├── best-practice.md
│ ├── compatibility.md
│ ├── getting-started.md
│ └── release.md
└── performance/
└── comparison.md
More from wechat-miniprogram/skyline-skills
skyline-worklet
Skyline Worklet 动画系统技能。使用 worklet 函数、共享变量(SharedValue)、动画类型(timing/spring/decay)、Easing 缓动函数、组合动画和线程通信(runOnUI/runOnJS)开发高性能交互动画时使用此技能。适用于拖拽、手势跟随、弹簧回弹等需要 UI 线程直接响应的动画场景。触发关键词:worklet、worklet 动画、SharedValue、共享变量、timing、spring、decay、Easing、runOnUI、runOnJS、applyAnimatedStyle、交互动画、手势动画、UI 线程动画。
213skyline-route
Skyline 自定义路由与页面转场技能。涵盖自定义路由动画(routeBuilder)、预设路由(7 种 wx:// 类型)、页面返回手势、容器转场动画(open-container)、Router API。适用于实现半屏弹窗、页面缩放、底部弹出、卡片展开等转场效果。触发关键词:自定义路由、custom-route、routeBuilder、navigateTo、页面转场、半屏、预设路由、返回手势、open-container。
198skyline-components
Skyline 组件开发技能。涵盖 scroll-view 及其增强模式(列表/嵌套滚动)、swiper 高级特性、表单组件、图片/文本组件、半屏可拖拽组件、共享元素动画等。适用于需要开发滚动列表、轮播、表单输入、页面过渡动画等场景。
191skyline-config
Skyline 小程序 JSON 配置规范技能。涵盖 app.json 全局配置(renderer、rendererOptions、componentFramework)、页面 json 配置(navigationStyle、disableScroll)、project.config.json 项目配置。适用于创建新 Skyline 项目、迁移 WebView 项目、配置混合渲染。触发关键词:app.json、页面配置、renderer、rendererOptions、skyline配置、navigationStyle、disableScroll、componentFramework、glass-easel、project.config.json。
184skyline-scroll-api
Skyline 滚动控制 API 技能。涵盖 ScrollViewContext(程序化下拉刷新、下拉二级、滚动定位)、DraggableSheetContext(半屏面板程序化滚动)、worklet.scrollViewContext(UI 线程直接控制滚动)。适用于程序化触发刷新/二级、控制 DraggableSheet 位置、在 worklet 中操作滚动。触发关键词:ScrollViewContext、DraggableSheetContext、scrollTo、triggerRefresh、triggerTwoLevel、下拉刷新API、下拉二级API、滚动API、worklet scrollViewContext。
181skyline-wxss
Skyline WXSS 样式支持技能。提供 Skyline 支持的 CSS 属性、值和限制信息。触发关键词:WXSS、CSS 支持、样式兼容性、属性支持、不支持的属性、display grid、position sticky、overflow、filter、渐变、gradient、linear-gradient、radial-gradient、conic-gradient、border-style、white-space、font-weight、text-decoration、text-overflow、aspect-ratio、will-change、calc、env、mask、mask-image、background-image、transition、animation、transform、font-feature-settings。
179