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 相关文章推荐
30个让人兴奋的视差滚动(Parallax Scrolling)效果网站
Mar 04 Javascript
jQuery语法小结(超实用)
Dec 31 Javascript
jQuery 3.0 的 setter和getter 模式详解
Jul 11 Javascript
AngularJS基础 ng-show 指令简单示例
Aug 03 Javascript
纯JS实现只能输入数字的简单代码
Jun 21 Javascript
用最简单的方法判断JavaScript中this的指向(推荐)
Sep 04 Javascript
javascript实现数字配对游戏的实例讲解
Dec 14 Javascript
JavaScript实现学生在线做题计时器功能
Dec 05 Javascript
vue实现手机端省市区区域选择
Sep 27 Javascript
JavaScript函数重载操作实例浅析
May 02 Javascript
Vue使用富文本编辑器Vue-Quill-Editor(含图片自定义上传服务、清除复制粘贴样式等)
May 15 Javascript
Vuex实现简单购物车
Jan 10 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
php笔记之常用文件操作
2010/10/12 PHP
php _autoload自动加载类与机制分析
2012/02/10 PHP
PHP JSON格式的中文显示问题解决方法
2015/04/09 PHP
Yii 2.0如何使用页面缓存方法示例
2017/05/23 PHP
php代码调试利器firephp安装与使用方法分析
2018/08/21 PHP
javascript生成随机颜色示例代码
2014/05/05 Javascript
Javascript闭包实例详解
2015/11/29 Javascript
AngularJS中一般函数参数传递用法分析
2016/11/22 Javascript
Nodejs读取文件时相对路径的正确写法(使用fs模块)
2017/04/27 NodeJs
jQuery.ajax向后台传递数组问题的解决方法
2017/05/12 jQuery
vue中各组件之间传递数据的方法示例
2017/07/27 Javascript
vue 虚拟dom的patch源码分析
2018/03/01 Javascript
vue单页面应用打开新窗口显示跳转页面的实例
2018/09/21 Javascript
详解Vue This$Store总结
2018/12/17 Javascript
JavaScript数据结构与算法之二叉树插入节点、生成二叉树示例
2019/02/21 Javascript
Vue 自定义指令实现一键 Copy功能
2019/09/16 Javascript
基于vuex实现购物车功能
2021/01/10 Vue.js
用javascript实现倒计时效果
2021/02/09 Javascript
Python 字典(Dictionary)操作详解
2014/03/11 Python
Python实现方便使用的级联进度信息实例
2015/05/05 Python
Python使用gensim计算文档相似性
2016/04/10 Python
Python函数中不定长参数的写法
2019/02/13 Python
python把1变成01的步骤总结
2019/02/27 Python
解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题
2020/06/17 Python
python 实现客户端与服务端的通信
2020/12/23 Python
html5/css3响应式页面开发总结
2018/10/16 HTML / CSS
html标签之Object和EMBED标签详解
2013/07/04 HTML / CSS
用HTML5制作数字时钟的教程
2015/05/11 HTML / CSS
网站性能延迟加载图像的五种技巧(小结)
2020/08/13 HTML / CSS
圣彼得堡鲜花配送:Semicvetic
2020/09/15 全球购物
如何理解transaction事务的概念
2015/05/27 面试题
最新党员思想汇报
2014/01/01 职场文书
中层干部竞争上岗演讲稿
2014/01/13 职场文书
挂靠协议书范本
2014/04/22 职场文书
心理咨询承诺书
2014/05/20 职场文书
幼师小班个人总结
2015/02/12 职场文书