获得徽章 2
GoFrame是一款模块化、高性能、企业级的Go基础开发框架。GoFrame不是一款WEB/RPC框架,而是一款通用性的基础开发框架,是Golang标准库的一个增强扩展级,包含通用核心的基础开发组件,优点是实战化、模块化、文档全面、模块丰富、易用性高、通用性强、面向团队。 #青训营 x 字节后端训练营#
将整个结构扁平化后收益特别多。
结构很清晰,我们可以很轻易的对数据进行处理。
特别是在特别大数据量的情况下,这种形式可以极大的提高性能,减去需要遍历的性能消耗。
以前各种在数组对象出现的弊端都消失了。
添加
在数组对象形式中我们需要给一个父节点添加一个子节点我们首先需要拿到这个父节点的key,然后对整个数组结构进行遍历查找来找到对应的item拎出来push进他的children中,然后需要重新构造一个新的数组对象。
由于实在是太麻烦了我就列了大概思路,相信大家都会,我们会发现非常繁琐,接下来我会着重讲一下Map形式。
删除
在数组对象形式中我们需要删除一个节点的时候,还是很繁琐,先遍历再删除构造新的数组,想想都已经很麻烦了。
而在Map形式中我们直接delete对应id的项即可,如果该项有父节点,我们可以在对应parentId项中的childrenIds移除对应的id即可。
修改
在数组对象形式中我们想修改某一个节点的title的时候,我们需要根据key遍历找出这个节点然后修改最后构造新的数组结构。
而在Map形式我们拿到想修改的id后就可以直接修改。
渲染
就拿react来举例,我们一般渲染一个列表都是通过map进行遍历渲染,拿到对应的item通过itemRender()来处理对应的ReactNode,在渲染中其实两种状态的使用相差不大。
子节点
在第一种结构中我们的子节点都是在父节点的children数组下的每一项,而每一项还会有各自的子节点存在于对应的children中。
而在第二种结构中每一项都可以当成是子节点,他们各自都拥有一个parentId,而根节点的parentId为空代表它没有父节点,他们的各自的childrenIds存储了他们各自item的子节点id。
父节点
在第一种结构中其实没有专门的根节点,在最外层的数组中每一项都是第一层级的父节点。
而在第二种结构中一般都会有一个item专门来表示根节点,就比如这个对象第一行id为root的item。
条件断点
条件断点,相对于普通断点多了条件逻辑判断,只有符合条件逻辑的才会进入断点,这能解决有些断点会进入多次,但我们只需要符合特定逻辑的断点,这能提高效率
VS code 断点
有些人喜欢在浏览器打断点,有些人喜欢在IDE断点,这个看个人喜好。但是Vs Code断点还是需要学会的,对于编译问题、脚本或者脚手架工具这些Node运行环境,就需要借助于IDE的调试环境了,当然Vs Code断点的很简单,跟浏览器类似,都是主流操作
下一页