june01
june01
一般来说不会,有监听滚动事件并在里面做什么操作么?
看描述不太明白,看标题说是没有 setData 滚动不流畅,但是实际上是有 setData,从触发点击事件到渲染完成比较慢? 这里滚动与渲染是属于两个不同的问题,具体的问题是指哪一块?
其实对于页面节点数量过多且又亟需性能的场景,是更推荐原生开发的: 不过按你描述耗时在 callEvent 也不太对劲,你可以在 miniprogram-element/base 里的这里开始打点看看: 看是小程序点击到触发 onTap 慢,还是开始调 callEvent 到触发 addEventListener('click') 慢?按道理虽然 callEvent 本身会有冒泡/捕获处理,但不至于慢这么多,kbone 的性能瓶颈应该在渲染上。
> 我想kbone有没有可能像taro一样重写react的renderer,因为现在使用react的时候的路径为 react的虚拟dom-kbone模拟的虚拟dom-小程序的dom 如果能重写renderer,可以直接在render里进行setData,将react的虚拟dom转化为小程序的dom,这样会不会相对提高一些性能, 理论上当然可以这么做,不过 kbone 一开始的设计就是不耦合任何 Web 框架,只是纯粹提供一个类 jsDom 一样的使用方式(方便接入各种各样的 Web 框架)。如果只是为了优化渲染性能的话,我们通常不会去引入第三方框架再在第三方框架上进行优化,而是直接优化小程序框架本身,比如近期小程序中的组件框架就有升级计划 —— [将 exparser 替换成 glass-easel](https://github.com/wechat-miniprogram/glass-easel)
> 如果我使用这个属性generate.wxCustomComponent 页面上有一半程序原生组件和一半kbone混合渲染,性能会不会比只用kbone大幅度提高 是说页面苛求性能那一部分用原生实现,然后作为第三方自定义组件被 kbone 接入么?这种方式确实是一个比较推荐的性能优化渠道,所以是可以这么做的。[相关文档](https://wechat-miniprogram.github.io/kbone/docs/guide/advanced.html#%E4%BD%BF%E7%94%A8%E5%B0%8F%E7%A8%8B%E5%BA%8F%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6) 不过需要明确的是单个页面内的自定义组件实例不能太多,不然有可能本末倒置了(不过正常来说一个页面中也不会有太多第三方自定义组件,如果有太多第三方自定义组件的场景其实就不如直接换成整个页面原生实现更优了)
去掉 reduce-loader 和 vue-improve-loader 后,看看编译是否正常?除此之外 vue 模板编译 kbone 就没有插手过了,全是 vue 自己做的。 也可以试试构建成 web,如果 web 可以的话,那编译模板这块尝试对齐到 web 就行。
那不应该,kbone 构建时按道理不会插手任何框架相关的处理。 给一下可以复现问题的完整 demo 我试试?
> 在vue3.2下复现总结:template下不写一个根div, 就无法渲染 我将 demo26 切到 3.2.31 版本,然后 template 根 div 下补充多个平行的 div,仍然是可以正常渲染的。
该问题是否仍存在?是的话看能不能抽一个可以完整复现的 demo 给我?