0x0001 这两天在看微信小程序团队搞的 Kbone 同构框架,它通过设计一个递归引用自己的自定义组件,直接解决了小程序端的静态页面模板难以表达动态的页面结构的问题。 相较于类似 Taro、WePY、mpvue 把 React、Vue 的模式静态编译成微信的 wxml 模板和逻辑层JS的姿势,Kbone 直接模拟了 DOM 模型,更灵活地适配了 Web 的结构。 (图片来自 AlloyTeam 的文章) 感慨一下,递归真是个奇妙的东西~ 参考: 小程序官方同构方案Kbone分析 - 腾讯Web前端 IMWeb 团队社区 微信官方小程序同构新方案Kbone全解析 - 腾讯AlloyTeam
hsxfjames 我想唱个反调,这是模板插槽的力量,跟递归没啥关系。。就相当于插座串联,叫递归实在不能苟同 我猜微信小程序只要还依托于 Webview ,其实也是在底层做了一次 custom dom binding 的,现在 kbone 又造了一层,感觉性能真好不到哪里去。。也就是小程序对开发者有严格要求,比如大小不能超过限制等等,不然复杂点的页面几千个节点分分钟炸了
0x0001 hsxfjames 从结果的角度来看的确是一种递归的模式,通过不断引用自身形成一个树形结构,遇到终止条件才停下来,想说的是这种思维模式的力量。 性能方面,估计和手动在wxml里面写上几千个 view 组件节点差不多。小程序的性能本身就不OK,想起来我上一台手机在卸载了微信和支付宝之后,如丝般顺滑。我自己目前把小程序这一层的性能消耗归结于对抗滥用和黑产付出的成本。也许小程序这种形态在未来什么时候是会消失的吧~ Kbone 用在营销活动页方面看起来还行,这里有个上线了的例子: 【腾讯课堂】基于Kbone使用React同构小程序开发实践总结