同一个逻辑页面,需要给不同的用户(每个用户都有若干子用户)显示不同的 UI (区别很大,应该要做组件级隔离),目前姑且算是有五种 UI 。怎么设计呢:
直接建不同的路由,权限里分配路由权限;
配置路由参数,权限里配置路由参数,再配合路由守卫鉴权;
将页面 ui 部分进行有效的拆分,直接在组件里进行判断显示
1
yunye 2023-03-02 16:28:50 +08:00
3
|
2
kop1989smurf 2023-03-02 16:29:49 +08:00
1 和 2 暂且理解为一种设计的两种技术解决方案。
3 是单独的一种设计形态。 然后个人理解这还取决于: 1 、你的业务确定封顶在 5 类 UI 么,会不会再次蔓延?如果会,建议选 3 ,否则 1 或 2 2 、这个业务 UI 不同,逻辑相同么?如果逻辑相同,有选 3 的可能性(不推荐),否则 1 或 2. |
3
unt OP @kop1989smurf 数据和逻辑目前是一样的,但是不排除以后需要根据客户需求调整。
然后 UI 种类是根据业务发展来的,目前是 3 种,不排除以后业务好的话有 20 种。也有可能今年业务不佳,业务整体裁掉。 |
4
duan602728596 2023-03-02 20:04:18 +08:00
感觉和我以前做过的新闻平台发文的需求很像,我们当时有好多新闻类型。我当时的做法是:
每个类型一种 UI 。 像叠积木一样,将 UI 需要的组件进行拆分,每个组件只负责一种功能。组件之前如果有通信,用 Event 监听。这样可以减少组件间的互相依赖。不同的类型就将组件根据不同的需求组合起来。 数据和逻辑统一处理,数据只有一个入口和出口。当时在浏览器环境内使用了 graphql 。不同类型需要获取和处理哪些数据,直接通过 graphql 的查询语句组合起来。这样就不必拆分处理逻辑,而且也能精细的获取到想要的数据。 路由处理建议 1 和 2 。 |
5
vizards 2023-03-03 11:27:36 +08:00 via iPhone
目前实践下来最简单的方法是给需要权限的 dom 挂上 data-permission-id (你喜欢的名字),然后在整个 app 顶层用 mutationObserver 集中处理权限并按需隐藏所有的权限 dom ,既实现了框架无关也做到了动态化控制权限无需发布前端代码
|
6
unt OP |