当前位置: 首页 > 知识库问答 >
问题:

javascript - toB项目页面定制化问题?

娄德运
2023-10-19

一个产品给多个甲方用,同一个功能给多个甲方定制不同的页面,代码共用一套
方案1: 菜单里面每个甲方配不同的菜单,比如甲方1环境,路径配置甲方1页面的路径,甲方2环境,配置甲方2页面路径
方案2: 页面外面包一层,用v-if判断加载不同的页面
<template>

<div v-if="甲方1">  <甲方1页面></div><div v-if="甲方2">  <甲方2页面></div>

</template>
请问哪种方式好,或者还有什么其他方法?

共有2个答案

弘承业
2023-10-19

你可以配置化一下会比较好,你定义一个全局变量

var menuUserList = [    'a':['菜单1','菜单2','菜单3'], // 甲方1    'b':['菜单3','菜单4','菜单5']  // 甲方2] 

a,b 可以看成一个角色,多个用户可以为同一个角色
当甲方登录的时候,经过某些判断获取到他是a角色
菜单也就可以这样写

// js 某些判断后获取到用户角色为a// var navList  = this.getUserInfo().role // 值: menuUserList[a]var navList = menuUserList[a]
<div v-if="navList.indexOf('菜单1')">  <菜单1></div><div v-if="navList.indexOf('菜单2')">  <菜单2></div><div v-if="navList.indexOf('菜单3')">  <菜单3></div>

这样扩展性,可复用性,管理性都能有所提高

温嘉赐
2023-10-19

这个问题涉及到前端开发的代码组织和复用策略。下面列出的每种方案都有其优点和缺点。

方案1:

  • 优点:每个甲方都有其独立的菜单和路径配置,可以完全独立开发和测试。当只需要修改一个甲方的页面时,不会影响到其他甲方。
  • 缺点:对于相同的页面功能,需要维护多套菜单和路径配置,增加了维护成本。同时,如果每个甲方都有大量的页面,会导致网站结构变得非常复杂并且难以管理。

方案2:

  • 优点:只需要一套菜单和路径配置,简化了网站的维护和管理。通过 v-if 判断,可以动态加载不同的页面,灵活性强。
  • 缺点:当需要修改一个甲方的页面时,需要重新编译和部署整个项目。这会显著增加开发和测试的时间。同时,由于页面是动态加载的,对于搜索引擎优化(SEO)可能有一些负面影响。

除了上述两种方案,还可以考虑使用更高级的前端开发框架,如 Vue 或 React 的路由和组件化机制来实现页面的动态加载和复用。例如,Vue 的动态组件和 React 的路由系统都可以实现不同页面和组件的动态加载。

综合考虑,选择哪种方案取决于具体的需求和情况。如果甲方数量不多,且每个甲方都有大量独立的页面,那么方案1可能是更好的选择。如果甲方数量多,且修改页面的频率不高,那么方案2可能更合适。如果需要同时考虑开发效率、可维护性、可扩展性和 SEO ,那么可能需要寻找一个更复杂的前端框架来满足需求。

 类似资料:
  • 公司的sass商城、B端商城给客户提供服务时,客户会提出各种定制化需求。比如,有的客户想改网站各种meta信息、有的客户想接入自己的埋点SDK、还有各种各样的定制。 部分高复用的需求可以做成配置,无需前端额外开发,但是像一些比较特别,而且都是小改动的,如何做到更优雅,对项目侵入最小呢? 面对各种定制化需求,你们是怎么做的呢?

  • vue2的一个改变值的问题 用的vue2的版本 为什么点击第一个按钮click1的时候页面输出了test2和8呢,第二个的时候就没发生变化,为了尝试,我还把第二个按钮里面也加了settimout,结果第二个按钮点击的时候页面还是不发生变化,有知道原因的吗? 无

  • 在一个vue项目中,当前我有两个hook:useTable和useFrom并且有两个请求 requestA和requestB,useTable中需要请求requestA并获取到其返回的数据。hooksB中需要请求requestA和requestB, 并且useForm中要求要请求完requestA才能请求requestB,因为在requestB中需要用到requestA返回的数据。我如何才能不让r

  • 请问vite初始化项目在浏览器宽带变小的情况整个页面会缩放是怎么回事? 我又试了下,好像基本的html网页就会这样,请问这是怎么回事? 这是正常的 这是缩小到一定程度后的样式,整个页面被缩小了,不仅仅是换行之类,是整个页面被缩小

  • Java 插件给项目加入了一些属性 (propertiy).这些属性已经被赋予了默认的值,已经足够来开始构建项目了.如果你认为不合适,改变它们的值也是很简单的.让我们看下这个例子.这里我们将指定 Java 项目的版本号,以及我们所使用的 Java 的版本.我们同样也加入了一些属性在 jar 的manifest里. 例子 7.5. 定制 MANIFEST.MF 文件 build.gradle sou

  • 当响应的状态码被设置为错误状态码,并且响应体中没有内容时,Servlet容器通常会渲染一个HTML错误页。若需要定制容器默认提供的错误页,你可以在web.xml中定义一个错误页面<error-page>元素。在Servlet 3规范出来之前,该错误页元素必须被显式指定映射到一个具体的错误码或一个异常类型。从Servlet 3开始,错误页不再需要映射到其他信息了,这意味着,你指定的位置就是对Serv