Vue多系统切换实现方案


Posted in Javascript onJune 05, 2018

前言

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

https://github.com/Mrblackant/vueIframe

效果如图:

Vue多系统切换实现方案

实现思路

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>
Javascript 相关文章推荐
基于jquery的固定表头和列头的代码
May 03 Javascript
AngularJS初始化过程分析(引导程序)
Dec 06 Javascript
老生常谈 关于JavaScript的类的继承
Jun 24 Javascript
js自调用匿名函数的三种写法(推荐)
Aug 19 Javascript
使用jQuery操作DOM的方法小结
Feb 27 Javascript
vue动态绑定组件子父组件多表单验证功能的实现代码
May 14 Javascript
关于微信小程序bug记录与解决方法
Aug 15 Javascript
微信小程序Getuserinfo解决方案图解
Aug 24 Javascript
JavaScript闭包与作用域链实例分析
Jan 21 Javascript
js中switch语句的学习笔记
Mar 25 Javascript
ES6 Generator基本使用方法示例
Jun 06 Javascript
vue项目页面嵌入代码块vue-prism-editor的实现
Oct 30 Javascript
jQuery实现的简单对话框拖动功能示例
Jun 05 #jQuery
vue2.0 自定义组件的方法(vue组件的封装)
Jun 05 #Javascript
vue使用技巧及vue项目中遇到的问题
Jun 04 #Javascript
jQuery实现的滑块滑动导航效果示例
Jun 04 #jQuery
jQuery实现常见的隐藏与展示列表效果示例
Jun 04 #jQuery
js如何找出字符串中的最长回文串
Jun 04 #Javascript
详解Webpack + ES6 最新环境搭建与配置
Jun 04 #Javascript
You might like
用php的ob_start来生成静态页面的方法分析
2011/03/09 PHP
php 定义404页面的实现代码
2012/11/19 PHP
PHP 下载文件时自动添加bom头的方法实例
2014/01/10 PHP
php实现搜索一维数组元素并删除二维数组对应元素的方法
2015/07/06 PHP
php metaphone()函数及php localeconv() 函数实例解析
2016/05/15 PHP
laravel框架模型和数据库基础操作实例详解
2020/01/25 PHP
javascript写的一个链表实现代码
2009/10/25 Javascript
JQuery一种取同级值的方式(比如你在GridView中)
2012/03/15 Javascript
js跨浏览器实现将字符串转化为xml对象的方法
2013/09/25 Javascript
js如何判断不同系统的浏览器类型
2013/10/28 Javascript
jquery查找父元素、子元素(个人经验总结)
2014/04/09 Javascript
javascript常用函数归纳整理
2014/10/31 Javascript
详解Node.js模块间共享数据库连接的方法
2016/05/24 Javascript
JavaScript实现前端分页控件
2017/04/19 Javascript
什么是Vue.js框架 为什么选择它?
2017/10/17 Javascript
vue实现样式之间的切换及vue动态样式的实现方法
2017/12/19 Javascript
iview日期控件,双向绑定日期格式的方法
2018/03/15 Javascript
解决layui前端框架 form表单,table表等内置控件不显示的问题
2018/08/19 Javascript
微信小程序实现图片压缩
2019/12/03 Javascript
从源码角度来回答keep-alive组件的缓存原理
2021/01/18 Javascript
使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子
2014/04/15 Python
利用Python的装饰器解决Bottle框架中用户验证问题
2015/04/24 Python
用python 批量更改图像尺寸到统一大小的方法
2018/03/31 Python
Python爬虫实现验证码登录代码实例
2019/05/10 Python
Python中的单下划线和双下划线使用场景详解
2019/09/09 Python
numpy:找到指定元素的索引示例
2019/11/26 Python
django执行原始查询sql,并返回Dict字典例子
2020/04/01 Python
Python实现上下文管理器的方法
2020/08/07 Python
python中pdb模块实例用法
2021/01/15 Python
python绘图模块之利用turtle画图
2021/02/12 Python
Champion官网:美国冠军运动服装
2017/01/25 全球购物
英国百年闻名的优质健康产品连锁店:Holland & Barrett
2019/12/19 全球购物
优秀高中生事迹材料
2014/02/11 职场文书
信息技术培训感言
2014/03/06 职场文书
公务员爱岗敬业演讲稿
2014/08/26 职场文书
基层党员四风问题自我剖析材料
2014/09/29 职场文书