zoukankan      html  css  js  c++  java
  • 我的前端工具集(四)树状结构前篇

    我的前端工具集(四)树状结构前篇

     

    liuyuhang原创,未经允许禁止转载

    目录

    我的前端工具集

    1、什么是树状结构

      树状结构,指的是由根,和叶组成的结构。

      我们一般看的文件夹关系,就是树状结构。打开一个文件夹,其中可以有多个文件夹。

      树状结构的路径能够向下扩展,同时能够向上溯源。

      在树状结构分叉的地方,叫做节点(node)。

      

      对于每个节点分叉数量相同的树,叫做X叉树,如每个节点分为2叉的树叫做二叉树。

      同理也有3叉树N叉树。

      

      2叉树是一种比较标准规范的数据结构了,以后会写相关内容!

      本文说的树,指的是在前端视图上要展示的树状结构,并非指数据结构!

      

      贴几张树状结构的可视效果:

    2.树状结构的特点

      树状结构都要满足一定的特点的,这些特点让这个树的功能给定!

      2.1.唯一根节点(ROOT)

        每个树形结构都应该有唯一的根节点,在向上追溯的时候,整个树状结构是根据从该节点开始的。

        

      2.2.可闭合可展开

        树形结构的节点一般都包括开闭功能,表现符号多为用+或-表示,也有用node或leaf表示的。

        树在加载完毕以后,也有两种表现形式,即默认关闭节点,默认展开节点。

        介于这两种形式之间的形式,就是默认展开部分节点,可以用某个参数来设定,比如默认展开三级节点。

      2.3.有唯一id构成

        树的每一个节点,即可以表示信息点(leaf),同时也可以表示是信息节点(node)

        区别在于,信息点是包含信息,而不包含子信息的。

        信息节点可以包含信息,也是允许包含子信息的。

        一般来讲,类似于文件与文件夹的关系。

        在自然环境中,一个树叶长出的地方,我们叫做叶芽,即该芽长出的是一片叶子(信息)。

        同时,叶芽在第二年,可能就生长成了一个枝芽(节点),枝芽中包含一个分支,该分支上可能长出多个叶芽。

        因此,不管是信息点(leaf),还是信息节点(node),都是有一个标记的,该标记即id,当然可以用其他的key来表示。

        但是要确定的是,该id应有唯一的value来表示,即有唯一id表示其身份。

      2.4.有pid指定其隶属节点

        如果按照自然顺序直接展示,那就是个list,而并非是树结构了。

        将正确的id标记的信息点(leaf)挂载在正确的信息节点(node)下,需要一个方式去识别,该识别方式即一个引用。

        因为每个信息节点(node)下可以挂载多个信息点(leaf),所以,需要有一个key表示value等同于信息节点(node)的id。

        

        多数情况下,大家采用pid的手段,即parentId的缩写。实际意义是this info‘s parent id is xxx的意思。

        即leaf的pid=node的id的时候,表示该leaf挂载在该node下。

        pid并不是唯一标识,但是为了表示树形结构,该key应该存在。

      2.5.每一叉上都有相应的Info信息

        如果每一个信息点(leaf)或信息节点(node)都只有id和pid,这个树就太空荡荡了,它需要一些信息,可能是:

        文字信息;

        某种功能按钮;

        某种绑定事件;

      2.6.组织形式多样化

        常见的系统中,树状结构是竖着展示的。而在很多组织结构图中,树状结构是横向展示的。

        除此之外,以类似离散图形式展示的,也可以称为树,比如脑图。

        不应该将树的组织形式唯一化,虽然竖向的树状图最为常见,也展示起来最为便利。

    3、树状结构解决了什么需求

      有了list的展示形式,为什么还需要树来展示信息?

      list的展示形式分为有序和无序两种,两种形式中,list中的各个元素都是没有级别之分的,最多有顺序之分。 

      树状结构主要展示的是元素之间的关系。这种元素之间的关系有两层含义:

      这种元素之间的关系,可以表示为层级关系,一种等级关系;

      同样,这种元素之间的关系,可以表示为包含关系,即集合中的包含、隶属这种含义的关系;

    4、树状结构的的原始数据

      树状结构要展现,需要原始数据,目前来看,我见过的原始数据组织形式,有以下几种:

      链表结构。

      N叉树结构。

      List结构。

      一般来讲数据是要做持久化的,这种持久化目前多储存于数据库中。

      数据库中读出来的原始数据,若不经过加工,直接使用,多数是List结构。

      之后将面临两个选择:

        在服务器上将List加工成树结构,还是发送List给浏览器,让浏览器加工成树结构?

      

      结果显而易见,这种不是必须给服务器做的工作,当然不让服务器去做。

    6、简单的树状结构Demo

    更新在下文中

    我的前端工具集(四)树状结构后篇 

    以上!

  • 相关阅读:
    【转】Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
    【转】Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
    【转】Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果
    android Touch事件传递小结
    【转】七、android图片特效处理之光晕效果
    【转】六、android图片特效处理之图片叠加
    【转】五、android图片特效处理之光照效果
    【转】四、android图像特效处理之底片效果
    【转】三、android图片特效处理之锐化效果
    linux命令简写与全写
  • 原文地址:https://www.cnblogs.com/liuyuhangCastle/p/9801074.html
Copyright © 2011-2022 走看看