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 多级checkbox选择效果
Aug 20 Javascript
jQuery 美元符冲突的解决方法
Mar 28 Javascript
jQuery方法简洁实现隔行换色及toggleClass的使用
Mar 15 Javascript
jquery选择器-根据多个属性选择示例代码
Oct 21 Javascript
浅谈js中调用函数时加不加括号的问题
Jul 28 Javascript
详解Angular2中的编程对象Observable
Sep 17 Javascript
Web前端开发之水印、图片验证码
Nov 27 Javascript
js实现一个可以兼容PC端和移动端的div拖动效果实例
Dec 09 Javascript
详解Vue路由开启keep-alive时的注意点
Jun 20 Javascript
使用live-server快速搭建本地服务器+自动刷新的方法
Mar 09 Javascript
Node.js使用Angular简单示例
May 11 Javascript
vue 列表页跳转详情页获取id以及详情页通过id获取数据
Mar 27 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
哪吒敖丙传:新人物二哥敖乙出场 小敖丙奶气十足
2020/03/08 国漫
php fckeditor 调用的函数
2009/06/21 PHP
30个php操作redis常用方法代码例子
2014/07/05 PHP
php解析http获取的json字符串变量总是空白null
2015/03/02 PHP
PHP+MySQL高并发加锁事务处理问题解决方法
2018/04/30 PHP
laravel手动创建数组分页的实现代码
2018/06/07 PHP
简单的jQuery banner图片轮播实例代码
2016/03/04 Javascript
Extjs 点击复选框在表格中增加相关信息行
2016/07/12 Javascript
JavaScript解析JSON格式数据的方法示例
2017/01/24 Javascript
vue分类筛选filter方法简单实例
2017/03/30 Javascript
JavaScrip关于创建常量的知识点
2017/12/07 Javascript
jQuery实现弹窗下底部页面禁止滑动效果
2017/12/19 jQuery
nodejs中密码加密处理操作详解
2018/03/20 NodeJs
搭建vue开发环境
2018/07/19 Javascript
Nuxt.js SSR与权限验证的实现
2018/11/21 Javascript
详解在Javascript中进行面向切面编程
2019/04/28 Javascript
[01:07:53]RNG vs VG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python读取Excel的方法实例分析
2015/07/11 Python
Python中的多行注释文档编写风格汇总
2016/06/16 Python
python中lambda()的用法
2017/11/16 Python
python实现发送邮件功能代码
2017/12/14 Python
python中利用h5py模块读取h5文件中的主键方法
2018/06/05 Python
python中的global关键字的使用方法
2019/08/20 Python
python 使用shutil复制图片的例子
2019/12/13 Python
详解如何在css3打包后自动追加前缀插件:autoprefixer
2018/12/18 HTML / CSS
亚马逊印度站:Amazon.in
2017/10/15 全球购物
Desigual英国官网:在线购买原创服装
2018/03/09 全球购物
为什么要有struct关键字
2012/05/08 面试题
远程教育心得体会
2014/01/03 职场文书
语文教学感言
2014/02/06 职场文书
《果园机器人》教学反思
2014/04/13 职场文书
安全责任协议书
2014/04/21 职场文书
战略性融资合作协议书范本
2014/10/17 职场文书
音乐教师求职信范文
2015/03/20 职场文书
导游词之山海关
2019/12/10 职场文书
Mysql数据库命令大全
2021/05/26 MySQL