在开发微信小程序时,我们经常会遇到真机调试的样式和模拟器的样式不一致的情况。我在项目中就遇到了这样的问题,经过深入研究,发现是Skyline渲染引擎导致的。
问题描述:
- 不使用Skyline时,真机调试下某些页面的图片无法显示。
- 使用Skyline时,真机调试下其他页面的样式出现混乱。
- 在模拟器中,无论使不使用所有页面的样式都达到了预期效果。
不使用Skyline:
使用Skyline:
经过分析,发现Skyline渲染引擎虽然能够提高页面性能,但也可能导致某些样式渲染不一致的问题。然而,完全不使用Skyline又会影响图片的显示。
解决方案:
最终,找到了一个折中的解决方案:Skyline按页面粒度开启,即单个页面使用。这样可以在保证图片正常显示的同时,最大限度地减少样式不一致的问题。
具体实现步骤如下:
app.json:
"lazyCodeLoading": "requiredComponents",
"rendererOptions": {
"skyline": {
"defaultDisplayBlock": true,
"disableABTest": true,
"sdkVersionBegin": "3.0.0",
"sdkVersionEnd": "15.255.255"
}
},
index.json:
{
"componentFramework": "glass-easel",
"renderer": "skyline"
}
通过这种方式,我们可以针对性地在特定页面启用Skyline,而不影响其他页面的渲染。