前言
在开发中我们经常会遇到:导航菜单、部门菜单、权限树、评论等功能。
这些功能都有共同的特点:
有父子关系
可无限递归
我们以导航菜单为例, 我们将导航菜单设置为动态的, 即从动态加载菜单数据。
数据库设计
适用于数据库存储的设计如下:
create table `menus`
(
`id` int primary key auto_increment,
`name` varchar(20) comment '菜单名称',
`pid` int default 0 comment '父级 ID, 最顶级为 0',
`order` int comment '排序, 序号越大, 越靠前'
)
前端渲染
对于前端来说, 我们一般需要这种效果:
菜单配置页面:
image
对应的导航菜单:
image
这些插件一般需要这两种格式:
基础格式:
[
{
"id": 1,
"name": "权限管理",
"pid": 0,<