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 相关文章推荐
html+css+js实现xp window界面及有关功能
Mar 26 Javascript
jquery中push()的用法(数组添加元素)
Nov 25 Javascript
全面解析Bootstrap排版使用方法(标题)
Nov 30 Javascript
JavaScript定时器制作弹窗小广告
Feb 05 Javascript
layui前段框架日期控件使用方法详解
May 19 Javascript
vue 本地服务不能被外部IP访问的完美解决方法
Oct 29 Javascript
详解angularjs4部署文件过大解决过程
Dec 05 Javascript
D3.js的基础部分之数组的处理数组的排序和求值(v3版本)
May 09 Javascript
微信小程序从注册账号到上架(图文详解)
Jul 17 Javascript
vue ssr服务端渲染(小白解惑)
Nov 10 Javascript
JS实现动态倒计时功能(天数、时、分、秒)
Dec 12 Javascript
vue 调用 RESTful风格接口操作
Aug 11 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+javascript液晶时钟
2006/10/09 PHP
PHP中用正则表达式清除字符串的空白
2011/01/17 PHP
php+mysqli实现批量执行插入、更新及删除数据的方法
2015/01/29 PHP
JavaScript的eval JSON object问题
2009/11/15 Javascript
javascript demo 基本技巧
2009/12/18 Javascript
Lazy Load 延迟加载图片的jQuery插件中文使用文档
2012/10/18 Javascript
在js中判断checkboxlist(.net控件客户端id)是否有选中
2013/04/11 Javascript
详解jquery中$.ajax方法提交表单
2014/11/03 Javascript
jQuery操作基本控件方法实例分析
2015/12/31 Javascript
JS iFrame加载慢怎么解决
2016/05/13 Javascript
jQuery实现点击行选中或取消CheckBox的方法
2016/08/01 Javascript
js中获取键盘事件的简单实现方法
2016/10/10 Javascript
微信小程序 网络API Websocket详解
2016/11/09 Javascript
JS实现新建文件夹功能
2017/06/17 Javascript
Vue使用vue-cli创建项目
2017/09/01 Javascript
Vue学习笔记之表单输入控件绑定
2017/09/05 Javascript
easyui下拉框动态级联加载的示例代码
2017/11/29 Javascript
Javascript Promise用法详解
2018/05/10 Javascript
微信小程序自定义底部导航带跳转功能
2018/11/27 Javascript
解决antd datepicker 获取时间默认少8个小时的问题
2020/10/29 Javascript
使用JS实现鼠标放上图片进行放大离开实现缩小功能
2021/01/27 Javascript
使用Python保存网页上的图片或者保存页面为截图
2016/03/05 Python
Python 爬虫图片简单实现
2017/06/01 Python
Python3导入自定义模块的三种方法详解
2018/04/13 Python
python复制文件到指定目录的实例
2018/04/27 Python
Python内置random模块生成随机数的方法
2019/05/31 Python
Python实现名片管理系统
2020/02/14 Python
Python+Kepler.gl轻松制作酷炫路径动画的实现示例
2020/06/02 Python
Restful_framework视图组件代码实例解析
2020/11/17 Python
介绍JAVA 中的Collection FrameWork(及如何写自己的数据结构)
2014/10/31 面试题
管理心得体会
2013/12/28 职场文书
中学运动会广播稿
2014/01/19 职场文书
应届毕业生简历自我评价
2014/01/31 职场文书
保护野生动物倡议书
2014/05/16 职场文书
工作求职信
2014/07/04 职场文书
python 模块重载的五种方法
2021/04/24 Python