微信小程序新版渲染引擎Skyline的使用详解

今年年初,在官方文档上看到小程序团队要推出一款性能逼近原生的渲染引擎Skyline,就一直在关注。刚好最近打算做一款新的阅读小程序,作为一名独立开发者,对于性能和用户体验的追求是永无止境的,于是我决定用纯Skyline打造这款小程序。

当然,这个项目里面所用到的skyline特性只是冰山一角,并非全部,更多酷炫的特性请前往官方文档查阅。

接下来,我会结合快书小程序,从以下几个方面,逐条阐述关于skyline特性(快书项目中所用到的)的理解与应用:

1. 效果演示。
2. 如何开启Skyline。
3. 新版组件swiper。
4. 新版组件scroll-view。
5. 全新组件snapshot。
6. 增强特性worklet动画。
7. 增强特性手势系统。
8. 增强特性自定义路由。
9. 增强特性共享元素动画。

希望对于刚接触Skyline,或者想要了解Skyline的同学有所帮助。当然,如有错误或遗漏,欢迎在评论区批评指正,不胜感激

一、效果演示

image

二、如何开启Skyline

开启Skyline的方式非常简单,只需要在app.json文件中,加入以下配置即可(这里是全局Skyline,若只打算指定页面开启,则在指定页面的json文件中配置即可):

"renderer":"skyline",
"lazyCodeLoading":"requiredComponents",
"rendererOptions": {
  "skyline": {
    "defaultDisplayBlock":true,  
  }
},
"componentFramework":"glass-easel",

三、新版组件-Swiper

旧版的Swiper基于webview的,在性能上有所局限,特别是当swiper-item的数量动态不断增加的情况下。当然,也可以自己想办法去优化,比如做懒加载和缓存,但相对来说比较麻烦。而Skyline版本的Swiper性能会大幅度提升,首先渲染引擎本身的性能提升了,另外官方也做了缓存的功能,只需要通过定义cache-extent的值,就能轻松定义缓存区域大小,例如值为 1 则表示提前渲染上下各一屏区域。

swiper

用法上,和webview版本没有太大区别(这里就不放代码了),只需注意不要使用某些webview独有的特性即可。

四、新版组件-Scroll-view

同样,旧版的scroll-view也基于webview的,滚动元素过多的时候会有明显卡顿,当然也是可以通过虚拟Dom的方式自行优化。然而,Skyline版本的scroll-view官方已经实现了只会渲染在屏节点的特性,大大提升了滚动的流畅度,真正做到了开箱即用。

用法上,有以下几个点要注意的。

指定type属性,有2个可选值,分别为:list和custom,对应的是列表模式和自定义模式。如是普通列表,list即可,如果是稍微复杂的列表,比如常见的瀑布流表现形式(类似小红书那样),则可使用custom。

<
### 如何在微信小程序中切换 WebView 模式Skyline 渲染模式 #### 切换方法及配置方式 微信小程序提供了两种渲染模式:WebView 渲染模式Skyline 渲染模式。开发者可以根据需求选择合适的渲染模式。 1. **启用 Skyline 渲染模式** 若要使用 Skyline 渲染模式,需要满足以下条件并完成相应配置: - 确保基础库版本不低于 2.29.2[^1]。 - 在 `app.json` 文件中添加特定的配置项来开启 Skyline 渲染模式。以下是具体的配置示例: ```json { "renderer": "skyline", "rendererOptions": {}, "componentFramework": "react" } ``` 这些字段的作用分别是: - `"renderer"` 字段指定渲染引擎Skyline。 - `"rendererOptions"` 可用于传递额外选项(目前暂无具体参数)[^1]。 - `"componentFramework"` 设置组件框架,默认值为 React。 2. **回退到 WebView 渲染模式** 若希望禁用 Skyline 渲染模式而改用传统的 WebView 渲染模式,则可以通过删除上述三个字段实现。即,在 `app.json` 中移除 `renderer`、`rendererOptions` 和 `componentFramework` 的定义即可自动回退至 WebView 渲染模式[^2]。 3. **动态检测当前渲染模式** 开发者还可以通过 API 来判断当前使用渲染模式。例如,利用 `wx.getSystemInfoSync()` 方法获取设备信息中的 `miniProgramRenderer` 字段,其返回值如果是 `'webview'` 表明采用的是 WebView 渲染;若是 `'skyline'` 则表示启用了 Skyline 渲染。 示例代码如下: ```javascript const systemInfo = wx.getSystemInfoSync(); console.log('Current renderer:', systemInfo.miniProgramRenderer); if (systemInfo.miniProgramRenderer === 'skyline') { console.log('Using Skyline rendering engine.'); } else if (systemInfo.miniProgramRenderer === 'webview') { console.log('Using WebView rendering engine.'); } ``` 4. **注意事项** - 使用 Skyline 渲染模式时需要注意初始支持的组件和样式较少,可能存在一定的兼容性问题[^1]。 - 对于追求高性能且目标用户群体集中在高版本客户端上的应用推荐优先考虑 Skyline 渲染模式。 - 如果项目涉及复杂的业务逻辑或者需要广泛兼容低版本环境,则可以选择保留默认的 WebView 渲染模式[^2]。 --- ####
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值