Vue多系统切换实现方案

 更新时间:2018年06月05日 08:53:14   作者:大师兄  
本篇文章给大家分享了关于Vue多系统切换实现的解决方案,对此有需要的朋友可以跟着参考学习下。

前言

公司分好几个后台模块,统一使用vue+elementUi框架开发,每一个后台模块都是单独团队开发的。并且几个系统整体的风格、布局一样的,包括左侧边栏,上方的面包屑等
用户在使用的时候,可能要切换别的系统就要在浏览器里,新打开窗口,再输入网址,回车。
总结来说,低效,所以现在想将几个系统融合到一个里边,并且每次切换系统的时候保留用户的操作。

https://github.com/Mrblackant/vueIframe

效果如图:

实现思路

1.结合iframe开发上方系统切换的组件

2.各个子系统有自己的域名

开发

因为每个页面都需要这个切换功能,所以我们直接在app.vue里开发。我是用vue+element开发的,所以切换的地方直接用了ele的tab切换组件。(写法有很多种,主要是思路)
读完这些话再看代码,方便理解:
1.如果用v-if控制每个iframe的显示隐藏,那么切换后系统后,再切换回来,iframe的属性会使页面会刷新,用户的操作不能保留
2.如果纯粹用elementUi的tab组件来做,页面一进来,就会把每个系统的资源加载进来,卡的要命,所以需要做到按需加载
3.实现:结合1、2问题,用v-if控制页面一进来,只加载一个默认的系统;tab切换的时候再利用v-if去加载该系统的资源;v-if只控制一次,不会随着tab的切换变化,这样就能保证切换系统时保留了用户的操作。

代码

app.vue

<template>
 <div id="app">
<div class="allWapper">
 <!-- logo -->
 <div class="myLogo">
  <img src="/static/mylogo.png">
 </div>
 <!-- 顶部tabs -->
 <el-tabs v-model="activeName" @tab-click="handleClick">
 <el-tab-pane class="temp" label="VUE" name="first">
  <iframe v-if="ifArr.first" class="ifa" scrolling=auto src="http://panjiachen.github.io/vue-element-admin/#/dashboard" frameborder="0"></iframe>
 </el-tab-pane>
 <el-tab-pane class="temp" label="SF" name="second">
  <iframe v-if="ifArr.second" class="ifa" scrolling=auto src="https://segmentfault.com/" frameborder="0"></iframe>
 </el-tab-pane>
 <el-tab-pane class="temp" label="百度" name="third">
  <iframe v-if="ifArr.third" class="ifa" scrolling=auto src="https://www.baidu.com/" frameborder="0"></iframe>
 </el-tab-pane>
 </el-tabs>

</div>
<!-- </div> -->
 <!-- <router-view/> -->
 </div>
</template>

<script>
export default {
 name: 'App',
 data(){
 return{
  activeName: 'first',
  ifArr:{
   first:true,
   second:false,
   third:false
  }
 }
 },
 methods:{
  handleClick(tab, event) {
  let flagName=tab.name
  this.ifArr[flagName]=true
  }
 }
}
</script>

<style>
body{
 margin:0;
 padding:5px;
}
.ifa{
 width:100%;
height:100%;
 }
 .el-tabs__content{
 border: 1px solid red;
 border-top:none;
 position: absolute;
 top: 62px;
 left: 0;
 bottom: 0;
 right: 0;
 // width:100%;
 // height:80%;
 }
 .allWapper{
 display:flex;
 border-bottom:1px solid #e4e7ed;
 }
 .el-tabs__header{
 margin-bottom:0px;
 }
 .el-tabs__header .el-tabs__item{
 margin:8px 0;
 font-size:16px;
 padding-left:29px;

 }
 .temp{
  width:100%;
 height:100%;
 }
.myLogo{
  width: 200px;
 height: 53px;
 margin-right:35px;
}
.myLogo img{
 width:100%;
}
</style>

相关文章

  • vue前端获取本地IP地址代码实例

    vue前端获取本地IP地址代码实例

    再做前端页面的时候,想获取本地的ip地址,可能是为了和服务器通信,可能是为了展示,无论哪种,下面给大家总结下方法,这篇文章主要给大家介绍了关于vue前端获取本地IP地址的相关资料,需要的朋友可以参考下
    2024-05-05
  • 详解使用jest对vue项目进行单元测试

    详解使用jest对vue项目进行单元测试

    这篇文章主要介绍了详解使用jest对vue项目进行单元测试,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • 深入详解Vue中的路由懒加载

    深入详解Vue中的路由懒加载

    路由懒加载是一种优化技术,用于延迟加载应用程序中的路由组件,它可以提高初始加载速度并减少资源消耗,特别适用于大型单页应用,下面我们就来看看它的原理与使用吧
    2023-08-08
  • Vue前后端不同端口的实现方法

    Vue前后端不同端口的实现方法

    今天小编就为大家分享一篇Vue前后端不同端口的实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • Vue2实现txt文件在线预览的代码示例

    Vue2实现txt文件在线预览的代码示例

    txt文件在线预览不需要下载另外的插件,主要有两种形式,一种是上传完成后实现预览;另一种是后端提供文件下载接口,获取文件在线地址实现预览;本文给大家介绍了Vue2实现txt文件在线预览的代码示例,需要的朋友可以参考下
    2025-01-01
  • vue+element多选级联选择器自定义props使用详解

    vue+element多选级联选择器自定义props使用详解

    这篇文章主要给大家介绍了关于vue+element多选级联选择器自定义props使用的相关资料,级联选择器展示的结果都是以数组的形式展示,也就是v-model绑定的结果,需要的朋友可以参考下
    2023-07-07
  • Vue如何实现table表格置顶

    Vue如何实现table表格置顶

    这篇文章主要介绍了Vue如何实现table表格置顶,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • vue2.0中自适应echarts图表、全屏插件screenfull的使用

    vue2.0中自适应echarts图表、全屏插件screenfull的使用

    这篇文章主要介绍了vue2.0中自适应echarts图表、全屏插件screenfull的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • elementUI+Springboot实现导出excel功能的全过程

    elementUI+Springboot实现导出excel功能的全过程

    这篇文章主要介绍了elementUI+Springboot实现导出excel功能,现在也对这个导出功能进行一个汇总整理写出来,结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-09-09
  • nuxt框架中路由鉴权之Koa和Session的用法

    nuxt框架中路由鉴权之Koa和Session的用法

    后台管理页面需要有登录系统,所以考虑做一下路由鉴权,这篇文章主要介绍了nuxt框架中路由鉴权之Koa和Session的用法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05

最新评论