最近想自己做点东西,希望做的这些东西,能够发挥更大的价值,让更多的人能够用上,也觉得可以为别人提供一份参考资料。因此准备把做的过程中产生的一些文档和代码整理出来放在这里。
1. 背景
系统菜单主要用于有效、合理的组织系统的功能。在管理型运用系统中系统菜单是必不可少的一个模块,虽然菜单不涉及具体的业务功能,但用户在访问任何一项系统业务功能时都需要首先通过点击某一个菜单来实现。菜单是否方便、灵活将直接影响系统主要功能的使用。
由于系统菜单运用的广泛性和与具体业务功能的无关性,因此可以设计和实现一个相对通用的可配置的系统菜单。
1.1. 名词解释
频道——菜单栏,用于显示和组织菜单。
2. 需求分析
对于通用型的菜单需求分析,可以首先基于某一个或几个项目的需求进行分析。然后不断重构进一步完善和通用化。
下面是针对某个项目提炼出的需求要点。
- 系统的菜单项可方便的在后台进行管理。包括菜单项的增减、名称修改、顺序修改、图标修改、菜单类型维护及菜单与模块进行关联。
- 可实现菜单多级组织方式,每个菜单项下可挂子菜单。
- 一级菜单位于页面顶部,logo下,以横向方式展现。
- 显示菜单的频道有两级,默认只显示第一级频道,当需要显示第二级频道时,在一级频道下方再扩充出二级频道,二级频道用于显示当前级别的菜单。
- 可支持多种类型的菜单项。
- 菜单与系统模块之间的关联可灵活配置扩充,可直接配置模块URL,或者配置客户端JS函数。客户端JS函数可被重写进行自定义扩充。
- 菜单可方便的与系统权限管理进行集成。
- 用于B/S框架,可跨主流浏览器。
2.1. 菜单类型
- 子菜单横向显示,鼠标经过菜单时,菜单的子菜单横向显示在当前菜单下面,鼠标移开菜单时,菜单的子菜单将自动隐藏。
- 子菜单纵向显示,鼠标经过菜单时,菜单的子菜单纵向显示在当前菜单下面,鼠标移开菜单时,菜单的自菜单将自动隐藏。
- 下拉横向导航,频道内容不变,点击后,当前层的菜单(包括被点击的菜单及其兄弟菜单)展示在二级频道中。
- 频道切换,鼠标停留在菜单上时,子菜单不自动弹出,点击菜单后,整个频道内容切换为该菜单的子菜单。
- 返回上级菜单,只能用于通过频道切换菜单点击后所切换的频道上,点击后,频道切换回上一级菜单,显示父菜单及父菜单的兄弟菜单。
- 返回首页,只能用于通过频道切换菜单点击后所切换的频道上,点击后,频道切换回第一级菜单,显示根菜单及根菜单的兄弟菜单。
2.2. 用例分析
菜单模块的用户分为实施人员、系统管理员和系统用户。