--- name: skyline-overview description: Skyline 渲染引擎概览与迁移技能。了解 Skyline 架构、性能优势、功能特性、迁移指南和最佳实践时使用此技能。适用于初次接触 Skyline、评估迁移成本、或需要了解整体框架的场景。 --- # 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) ```json { "renderer": "skyline", "lazyCodeLoading": "requiredComponents", "componentFramework": "glass-easel", "rendererOptions": { "skyline": { "defaultDisplayBlock": true, "defaultContentBox": true, "tagNameStyleIsolation": "legacy", "enableScrollViewAutoSize": true, "keyframeStyleIsolation": "legacy" } } } ``` ### 页面配置(page.json) ```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(必须遵守) 1. **配置完整**:app.json 必须包含 `renderer`、`lazyCodeLoading`、`componentFramework` 三项 2. **自定义导航**:所有 Skyline 页面必须设置 `navigationStyle: custom` 3. **局部滚动**:使用 `scroll-view` 实现滚动,禁止依赖全局滚动 4. **文本组件**:纯文本必须用 `` 组件包裹 5. **预加载**:跳转 Skyline 页面前调用 `wx.preloadSkylineView()` ### NEVER(禁止行为) 1. **NEVER** 使用原生导航栏配置(Skyline 不支持) 2. **NEVER** 依赖 `Page.onPageScroll` 事件(使用 scroll-view 的滚动事件替代) 3. **NEVER** 在 Skyline 页面使用 `web-view` 组件 4. **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 局部滚动 - [ ] 纯文本用 `` 包裹 - [ ] 检查 WXSS 属性支持情况 - [ ] 测试原生组件(map/canvas/video)显示 ### 发布检查 - [ ] 配置 We 分析 AB 实验(灰度发布) - [ ] 测试 WebView 降级兼容性 - [ ] 低版本微信表现正常 ## 判断当前渲染引擎 ### JS 方式 ```javascript Page({ onLoad() { // 页面/组件实例上有 renderer 属性 console.log(this.renderer) // 'skyline' 或 'webview' } }) ``` ### API 方式 ```javascript // 异步方式 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 环境 ```javascript // 在可能跳转到 Skyline 页面的页面中 Page({ onShow() { // 延迟调用避免阻塞当前页面 setTimeout(() => { wx.preloadSkylineView() }, 500) } }) ``` ### 长列表优化 ```html {{item.name}} {{item.name}} ``` ## 相关技能 | 场景 | 推荐技能 | 说明 | |------|----------|------| | 配置详解 | `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 ```