电子商务系统的设计与实现(十四):菜单高亮

    菜单高亮,几乎是所有Web网站都需要的一个功能。

   这个功能,说起来,简单得很,给当前页面的菜单增加一个高亮样式,删除其它菜单的高亮样式。

   如果只高亮1个页面的菜单, 太简单了,但是如果菜单和页面比较多,就产生了争议。

    第1种方式:每个页面单独高亮。
  
<li id="indexli"><a href="${base}/">首页</a></li>
    <script type="text/javascript">
	function highlightIndex() {
		highlight("indexli");
	}	
      function highlight(id) {
		$("#" + id).addClass("liactive");
	}
</script> 



   好处:灵活性非常强。
   坏处:每个页面都需要增加一个高亮菜单的方法。

第2种方式:通过匹配URL, 只写一个高亮菜单的方法。
        
     var url = window.location.pathname;
		//默认为‘首页’index
		var current = 'index';
		if (url.indexOf('/service') != -1) {
			current = 'service';
		} else if (url.indexOf('/case') != -1) {
			current = 'case';
		} else if (url.indexOf('/article') != -1) {
			current = 'article';
		} else if (url.indexOf('/code') != -1) {
			current = 'code';
		} else if (url.indexOf('/about') != -1) {
			current = 'more';
		} else if (url.indexOf('/news') != -1) {
			current = 'more';
		} else if (url.indexOf('/help') != -1) {
			current = 'more';
		} else if (url.indexOf('/ask') != -1) {
			current = 'ask';
		} else {
			current = 'index';
		}
		for (var i = 0; i < navList.length; i++) {
			if (i == map[current]) {
				navList[i].className = 'liactive';
			} else {
				navList[i].className = '';
			}
		} 


好处:菜单高亮逻辑处理,都在一个地方。
坏处:灵活性很差,对URL有比较严格的要求。
简单说就是,URL的规则越简单越统一,匹配越简单。但是URL如果有例外的情况,就必须做特别处理。
当再增加一个URL的时候,需要考虑新增的URL和已有的URL匹配规则是否产生冲突。

-----------------------------------------------------------
上述2种方法我都用过,说说我的感受。
如果URL比较随意,就在每个具体的页面单独调用高亮函数。
如果URL非常统一,可以统一处理。

在实际过程中,比如公司的项目中,关于采用哪种方式就产生了争议,前端希望统一处理,后端倾向于单独定制。
后端开发过程中,url比较随意。前端希望后端把url规范命名,按照菜单的组织来定义url。
而boss则不愿意这么做,他认为菜单和后端url并不需要严格统一,菜单和后端业务不应该有过强的依赖。

就我们公司的项目和我自己的项目,我更倾向于每个页面单独调用高亮函数,非常灵活。
有的页面,只需要高亮最顶层菜单,有的页面,还需要高亮左侧的菜单。

至于高亮菜单的逻辑,可以封装成方法。

无论你增加了多少页面,每个页面的高亮,都不会互相影响。
-----------------------------------------------------------
再吐槽几句,封装菜单逻辑,每个页面调用一次高亮函数,分分钟就搞定的事情。非要去写统一的URL匹配,花费个把小时,还不能保证完全正确,并且, URL匹配也不能在多个项目之间复用。

团队开发就经常存在这么类似的很多问题, 导致开发效率非常低。

so,我认为,一个优秀的全栈式开发工程师,和5个人的小团队开发效率差不多。 
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Vue菜单权限设计实现主要包括以下几个方面: 1. 菜单数据结构设计:首先,我们需要设计一个合适的菜单数据结构,一般可以使用树形结构来表示菜单的层级关系。每个菜单项包括菜单名称、路由路径、图标、是否显示等属性。 2. 权限控制设计:在用户登录成功后,后端会返回该用户所拥有的菜单权限列表。前端可以通过保存用户的菜单权限,对用户进行菜单权限的控制。一种常用的做法是在路由守卫中判断用户是否有访问该路由的权限,并根据权限来动态渲染菜单。 3. 菜单渲染和动态展示:根据用户的菜单权限列表,前端通过递归遍历菜单数据结构,来渲染用户可见的菜单项。通过在菜单组件中动态绑定数据,可以实现菜单的展开和收起、高亮当前路由等功能。 4. 菜单操作和权限判断:除了菜单的展示,还需要考虑菜单的操作权限判断。例如,某个菜单项只有管理员才有权限访问,可以根据用户的角色或权限列表来判断该菜单项是否应该显示或可操作。 5. 菜单数据的动态更新:在某些场景下,菜单的数据可能会有动态更新。比如,管理员新增了一个菜单项,对应的路由也发生了变化。这时候,前端需要通过调用后端接口来更新用户的菜单权限列表,并且重新渲染菜单。 综上所述,Vue菜单权限设计实现需要从菜单数据结构设计、权限控制、菜单渲染和动态展示、菜单操作和权限判断、菜单数据的动态更新等方面进行考虑和实现。通过合理的设计实现,可以确保系统具备良好的菜单权限管理功能,提高用户体验和系统安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值