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 相关文章推荐
MyEclipse取消验证Js的两种方法
Nov 14 Javascript
全面了解JavaScirpt 的垃圾(garbage collection)回收机制
Jul 11 Javascript
纯js实现悬浮按钮组件
Dec 17 Javascript
jQuery点击弹出层弹出模态框点击模态框消失代码分享
Jan 21 Javascript
JavaScript实现按键精灵的原理分析
Feb 21 Javascript
纯JS实现轮播图
Feb 22 Javascript
vue如何从接口请求数据
Jun 22 Javascript
Vue.js中组件中的slot实例详解
Jul 17 Javascript
Node.js中,在cmd界面,进入退出Node.js运行环境的方法
May 12 Javascript
使用淘宝镜像cnpm安装Vue.js的图文教程
May 17 Javascript
Layui 设置select下拉框自动选中某项的方法
Aug 14 Javascript
如何使用vue3打造一个物料库
May 08 Vue.js
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
Godaddy空间Zend Optimizer升级方法
2010/05/10 PHP
php 中英文语言转换类代码
2011/08/11 PHP
PHP编程开发怎么提高编程效率 提高PHP编程技术
2015/11/09 PHP
laravel excel 上传文件保存到本地服务器功能
2019/11/14 PHP
Javascript Math ceil()、floor()、round()三个函数的区别
2010/03/09 Javascript
JQuery 自定义CircleAnimation,Animate方法学习笔记
2011/07/10 Javascript
js读写json文件实例代码
2014/10/21 Javascript
js点击返回跳转到指定页面实现过程
2020/08/20 Javascript
JavaScript中ES6字符串扩展方法
2016/08/26 Javascript
简单实现Vue的observer和watcher
2016/12/21 Javascript
jquery uploadify如何取消已上传成功文件
2017/02/08 Javascript
实例讲解DataTables固定表格宽度(设置横向滚动条)
2017/07/11 Javascript
VueJS事件处理器v-on的使用方法
2017/09/27 Javascript
jquery 通过ajax请求获取后台数据显示在表格上的方法
2018/08/08 jQuery
JavaScript实现京东快递单号查询
2020/11/30 Javascript
[02:23]DOTA2英雄基础教程 幻影长矛手
2013/12/09 DOTA
Python系统监控模块psutil功能与经典用法分析
2018/05/24 Python
用PyInstaller把Python代码打包成单个独立的exe可执行文件
2018/05/26 Python
在Python中使用Neo4j的方法
2019/03/14 Python
Python双链表原理与实现方法详解
2020/02/22 Python
Python selenium爬取微博数据代码实例
2020/05/22 Python
解决keras backend 越跑越慢问题
2020/06/18 Python
python json.dumps() json.dump()的区别详解
2020/07/14 Python
python 如何设置守护进程
2020/10/29 Python
BASIC HOUSE官方旗舰店:韩国著名的服装品牌
2018/09/27 全球购物
哄娃神器4moms商店:美国婴童用品品牌
2019/03/07 全球购物
开工庆典邀请函范文
2014/01/16 职场文书
自考毕业自我鉴定
2014/03/18 职场文书
2014年群众路线教育实践活动整改措施
2014/09/24 职场文书
党的群众路线教育实践活动教师自我剖析材料
2014/10/09 职场文书
工作失职检讨书(精华篇)
2014/10/15 职场文书
教师岗位职责
2015/02/03 职场文书
装修公司工程部经理岗位职责
2015/04/09 职场文书
利用html+css实现菜单栏缓慢下拉效果的示例代码
2021/03/30 HTML / CSS
pandas:get_dummies()与pd.factorize()的用法及区别说明
2021/05/21 Python
Python自动化测试PO模型封装过程详解
2021/06/22 Python