个人前端工具集(四)树状结构前篇

个人前端工具集(四)树状结构前篇html

 

liuyuhang原创,未经容许禁止转载前端

 

目录node

个人前端工具集数据库

 

一、什么是树状结构浏览器

 

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

  咱们通常看的文件夹关系,就是树状结构。打开一个文件夹,其中能够有多个文件夹。数据结构

  树状结构的路径可以向下扩展,同时可以向上溯源。工具

 

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

  

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

  同理也有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.组织形式多样化

 

    常见的系统中,树状结构是竖着展现的。而在不少组织结构图中,树状结构是横向展现的。

    除此以外,以相似离散图形式展现的,也能够称为树,好比脑图。

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

 

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

 

  有了list的展现形式,为何还须要树来展现信息?

 

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

 

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

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

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

 

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

 

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

  链表结构。

  N叉树结构。

  List结构。

 

  通常来说数据是要作持久化的,这种持久化目前多储存于数据库中。

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

 

  以后将面临两个选择:

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

  

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

 

六、简单的树状结构Demo

 

更新在下文中

 

个人前端工具集(四)树状结构后篇 

 

以上!