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

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

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

  • 本文向大家介绍JavaScript手风琴页面制作,包括了JavaScript手风琴页面制作的使用技巧和注意事项,需要的朋友参考一下 啥都不说了,直接上效果图 1.Html结构代码 2.css样式代码 3.javascript代码 4.主要: a.字体竖排垂直:字体大小font-size = 包含字体标签宽度width b.js中stop()方法:stop()表示结束动画有过渡          s

  • 本文向大家介绍vue项目强制清除页面缓存的例子,包括了vue项目强制清除页面缓存的例子的使用技巧和注意事项,需要的朋友参考一下 异常描述: 支付宝中内嵌h5项目(vue框架开发),前端重新打包上传之后访问页面会导致页面空白、页面tab点击异常之类异常情况,需要手动清除支付宝缓存才可以正常访问。 解决方案: 在HTTP协议中,只有后端返回 expires 或 Cache-Control:max-ag