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 validator 插件增加日期比较方法
Feb 21 Javascript
JavaScript 函数replace深入了解
Mar 14 Javascript
Jquery动态更改一张位图的src与Attr的使用
Jul 31 Javascript
Jquery图片延迟加载插件jquery.lazyload.js的使用方法
May 21 Javascript
基于jQuery的checkbox全选问题分析
Nov 18 Javascript
JS实现div模块的截图并下载功能
Oct 17 Javascript
JS实现移动端整屏滑动的实例代码
Nov 10 Javascript
浅谈React Event实现原理
Sep 20 Javascript
vue 自动化路由实现代码
Sep 03 Javascript
vue项目中使用bpmn为节点添加颜色的方法
Apr 30 Javascript
JS中作用域以及变量范围分析
Jul 18 Javascript
JavaScript setTimeout()基本用法有哪些
Nov 04 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数组查找函数总结
2014/11/18 PHP
php访问数组最后一个元素的函数end()用法
2015/03/18 PHP
WordPress开发中自定义菜单的相关PHP函数使用简介
2016/01/05 PHP
PHP微信企业号开发之回调模式开启与用法示例
2017/11/25 PHP
PHP异步进程助手async-helper
2018/02/05 PHP
使用Zookeeper分布式部署PHP应用程序
2019/03/15 PHP
关于query Javascript CSS Selector engine
2013/04/12 Javascript
js的window.showModalDialog及window.open用法实例分析
2015/01/29 Javascript
javascript中call和apply的用法示例分析
2015/04/02 Javascript
javascript实现多栏闭合展开式广告位菜单效果实例
2015/08/05 Javascript
根据user-agent判断蜘蛛代码黑帽跳转代码(js版与php版本)
2015/09/14 Javascript
Webpack 实现 Node.js 代码热替换
2015/10/22 Javascript
bootstrap flask登录页面编写实例
2016/11/01 Javascript
React学习笔记之条件渲染(一)
2017/07/02 Javascript
javaScript和jQuery自动加载简单代码实现方法
2017/11/24 jQuery
解决Vue.js 2.0 有时双向绑定img src属性失败的问题
2018/03/14 Javascript
vue项目中添加单元测试的方法
2018/07/21 Javascript
微信JS-SDK updateAppMessageShareData安卓不能自定义分享详解
2019/03/29 Javascript
jquery+ajax实现上传图片并显示上传进度功能【附php后台接收】
2019/06/06 jQuery
JS函数本身的作用域实例分析
2020/03/16 Javascript
利用python画一颗心的方法示例
2017/01/31 Python
Java编程迭代地删除文件夹及其下的所有文件实例
2018/02/10 Python
Python3.5面向对象与继承图文实例详解
2019/04/24 Python
Django框架自定义session处理操作示例
2019/05/27 Python
Django如何使用第三方服务发送电子邮件
2019/08/14 Python
Pytorch中Tensor与各种图像格式的相互转化详解
2019/12/26 Python
Python如何用filter函数筛选数据
2020/03/05 Python
Python通用唯一标识符uuid模块使用案例
2020/09/10 Python
Lombok插件安装(IDEA)及配置jar包使用详解
2020/11/04 Python
HTML5移动端开发遇见的东西
2019/10/11 HTML / CSS
巴西服装和鞋子购物网站:Marisa
2018/10/25 全球购物
预备党员表决心书
2014/03/11 职场文书
安全事故隐患排查治理制度
2015/08/05 职场文书
升学宴祝酒词
2015/08/11 职场文书
MySQL中连接查询和子查询的问题
2021/09/04 MySQL
css3中2D转换之有趣的transform形变效果
2022/02/24 HTML / CSS