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 相关文章推荐
Javascript 作用域使用说明
Aug 13 Javascript
读jQuery之六 缓存数据功能介绍
Jun 21 Javascript
让低版本浏览器支持input的placeholder属性(js方法)
Apr 03 Javascript
JavaScript中的对象的extensible属性介绍
Dec 30 Javascript
js实现仿QQ秀换装效果的方法
Mar 04 Javascript
javascript实现获取字符串hash值
May 10 Javascript
实现Vue的markdown文档可以在线运行的方法示例
Dec 11 Javascript
JS前端知识点总结之页面加载事件,数组操作,DOM节点操作,循环和分支
Jul 04 Javascript
Vue的click事件防抖和节流处理详解
Nov 13 Javascript
JavaScript的console命令使用实例
Dec 03 Javascript
详细分析React 表单与事件
Jul 08 Javascript
解决vue初始化项目一直停在downloading template的问题
Nov 09 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 header()函数使用说明
2008/07/10 PHP
解析PHP实现多进程并行执行脚本
2013/06/18 PHP
thinkphp模板继承实例简述
2014/11/26 PHP
浅谈PHP正则中的捕获组与非捕获组
2016/07/18 PHP
php 删除指定文件夹的实例讲解
2017/07/25 PHP
Prototype中dom对象方法汇总
2008/09/17 Javascript
js 页面执行时间计算代码
2009/03/04 Javascript
js或css实现滚动广告的几种方案
2010/01/28 Javascript
初识javascript 文档碎片
2010/07/13 Javascript
node.js中的fs.chmodSync方法使用说明
2014/12/18 Javascript
JavaScript中的small()方法使用详解
2015/06/08 Javascript
JavaScript实现动态删除列表框值的方法
2015/08/12 Javascript
javascript学习笔记整理(概述、变量、数据类型简介)
2015/10/25 Javascript
JQuery ztree 异步加载实例讲解
2016/02/25 Javascript
BootStrap selectpicker
2016/06/20 Javascript
JS实现批量上传文件并显示进度功能
2017/06/27 Javascript
前端跨域的几种解决方式总结(推荐)
2017/08/16 Javascript
在Vue中使用echarts的方法
2018/02/05 Javascript
Angularjs中date过滤器失效的问题及解决方法
2018/07/06 Javascript
解决Vue使用swiper动态加载数据,动态轮播数据显示白屏的问题
2018/09/27 Javascript
Nuxt.js的路由跳转操作(页面跳转nuxt-link)
2020/11/06 Javascript
Python3中的2to3转换工具使用示例
2015/06/12 Python
python验证码识别的实例详解
2016/09/09 Python
使用python读取txt文件的内容,并删除重复的行数方法
2018/04/18 Python
Python FTP两个文件夹间的同步实例代码
2018/05/25 Python
python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
2019/12/11 Python
Python中实现输入一个整数的案例
2020/05/03 Python
linux面试题参考答案(10)
2016/10/26 面试题
农场厂长岗位职责
2013/12/28 职场文书
《听鱼说话》教学反思
2014/02/15 职场文书
四风对照检查材料范文
2014/09/27 职场文书
吴仁宝观后感
2015/06/09 职场文书
四年级作文之说明文作文
2019/10/14 职场文书
六年级上册《闻官军收河南河北》的教学设计
2019/11/15 职场文书
在前女友婚礼上,用Python破解了现场的WIFI还把名称改成了
2021/05/28 Python
PostgreSQL自动更新时间戳实例代码
2021/11/27 PostgreSQL