vue 基于abstract 路由模式 实现页面内嵌的示例代码


Posted in Vue.js onDecember 14, 2020

abstract 路由模式

abstract 是vue路由中的第三种模式,本身是用来在不支持浏览器API的环境中,充当fallback,而不论是hash还是history模式都会对浏览器上的url产生作用,本文要实现的功能就是在已存在的路由页面中内嵌其他的路由页面,而保持在浏览器当中依旧显示当前页面的路由path,这就利用到了abstract这种与浏览器分离的路由模式。

路由示例

export const routes = [
 {
  path: "/",
  redirect: "abstract-route",
 },
 {
  path: "/embed-route",
  name: "embedded",
  component: () =>
   import(/* webpackChunkName: "embed" */ "../views/embed.vue"),
 },
 {
  path: "/abstract-route",
  name: "abstract",
  component: () =>
   import(/* webpackChunkName: "abstract" */ "../views/abstract.vue"),
 },
];

const router = new VueRouter({
 mode: "history",
 base: process.env.BASE_URL,
 routes,
});

本次示例有两个路由,分别为abstract,embedded,其中abstract视图上展开一个抽屉,抽屉当中显示embedded的视图。即:

<template>
 <div>
  <RouterDrawer
   :visible.sync="visible"
   :path="{ name: 'embedded' }"
   size="50%"
   title="drawer comps"
  ></RouterDrawer>
  <el-button @click="visible = true">open drawer</el-button>
 </div>
</template>


// embedded views
<template>
 <div>
  embedded views
 </div>
</template>

vue 基于abstract 路由模式 实现页面内嵌的示例代码

router-drawer 封装

当前项目默认是history 的路由模式,因此在进入abstract页面时,浏览器Url为http://127.0.0.1:8010/abstract-route,而router-drawer要做的是在此基础上,重新实例化一个abstract模式的路由,然后在组件当中利用<router-view />去挂载要被内嵌的目标页面。即:

<template>
 <el-drawer
  :visible.sync="visible"
  v-bind="$attrs"
  :before-close="handleClose"
 >
  <router-view />
 </el-drawer>
</template>
<script>
import { routes } from "../router/index";
import VueRouter from "vue-router";

export default {
 name: "router-drawer",
 props: {
  path: {
   type: Object,
   required: true,
  },
  visible: {
   type: Boolean,
   required: true,
   default: false,
  },
 },
  // 此处实例化一个新的router来配合当前页面的router-view
 router: new VueRouter({
  mode: "abstract",
  base: "/",
  routes,
 }),
 methods: {
  handleClose() {
   this.$emit("update:visible", false);
  },
 },
 mounted() {
  console.log("drawer router", this.$router);
  this.$router.push(this.path);
 },
};
</script>

通过打印日志可以得出两个实例化的路由:

vue 基于abstract 路由模式 实现页面内嵌的示例代码

这样即可实现在不改变当前页面path的前提下加载其他路由中的views了。

代码示例

以上就是vue 基于abstract 路由模式 实现页面内嵌的示例代码的详细内容,更多关于vue 实现页面内嵌的资料请关注三水点靠木其它相关文章!

Vue.js 相关文章推荐
用vue设计一个日历表
Dec 03 Vue.js
Vue $attrs &amp; inheritAttr实现button禁用效果案例
Dec 07 Vue.js
vue-router定义元信息meta操作
Dec 07 Vue.js
浅谈Vue开发人员的7个最好的VSCode扩展
Jan 20 Vue.js
vue 组件基础知识总结
Jan 26 Vue.js
Vue 事件的$event参数=事件的值案例
Jan 29 Vue.js
如何封装Vue Element的table表格组件
Feb 06 Vue.js
vue-router路由懒加载及实现的3种方式
Feb 28 Vue.js
vue基于Teleport实现Modal组件
May 31 Vue.js
vue-router中hash模式与history模式的区别
Jun 23 Vue.js
Vue实现tab导航栏并支持左右滑动功能
Jun 28 Vue.js
VUE解决跨域问题Access to XMLHttpRequest at
May 06 Vue.js
Vue实现点击当前行变色
Dec 14 #Vue.js
Vue实现简单购物车功能
Dec 13 #Vue.js
vue使用element-ui实现表单验证
Dec 13 #Vue.js
vue+element实现动态加载表单
Dec 13 #Vue.js
vue实现两个区域滚动条同步滚动
Dec 13 #Vue.js
vue实现滚动鼠标滚轮切换页面
Dec 13 #Vue.js
详解vue中使用transition和animation的实例代码
Dec 12 #Vue.js
You might like
golang与php实现计算两个经纬度之间距离的方法
2016/07/22 PHP
php类的自动加载操作实例详解
2016/09/28 PHP
PHP高并发和大流量解决方案整理
2019/12/24 PHP
Prototype使用指南之range.js
2007/01/10 Javascript
jQuery EasyUI 中文API Button使用实例
2010/04/14 Javascript
JavaScript 放大镜 放大倍率和视窗尺寸
2011/05/09 Javascript
初步使用Node连接Mysql数据库
2016/03/03 Javascript
JavaScript 2048 游戏实例代码(简单易懂)
2016/03/25 Javascript
jQuery对象与DOM对象转换方法详解
2016/05/10 Javascript
浅谈js里面的InttoStr和StrtoInt
2016/06/14 Javascript
用JS实现轮播图效果(二)
2016/06/26 Javascript
Knockout结合Bootstrap创建动态UI实现产品列表管理
2016/09/14 Javascript
JS html时钟制作代码分享
2017/03/03 Javascript
微信小程序 循环及嵌套循环的使用总结
2017/09/26 Javascript
vue axios登录请求拦截器
2018/04/02 Javascript
Vuerouter的beforeEach与afterEach钩子函数的区别
2018/12/26 Javascript
JavaScript console的使用方法实例分析
2020/04/28 Javascript
[01:03:00]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第一局
2016/02/25 DOTA
Python挑选文件夹里宽大于300图片的方法
2015/03/05 Python
Python脚本实现格式化css文件
2015/04/08 Python
pandas 获取季度,月度,年度首尾日期的方法
2018/04/11 Python
Jupyter中直接显示Matplotlib的图形方法
2018/05/24 Python
通过pykafka接收Kafka消息队列的方法
2018/12/27 Python
10 分钟快速入门 Python3的教程
2019/01/29 Python
Python实现简单查找最长子串功能示例
2019/02/26 Python
Django web框架使用url path name详解
2019/04/29 Python
python绘制雪景图
2019/12/16 Python
Python3 读取Word文件方式
2020/02/13 Python
html5菜单折纸效果
2014/04/22 HTML / CSS
英语老师推荐信
2014/02/26 职场文书
我读书我快乐演讲稿
2014/05/07 职场文书
小学语文教研活动总结
2014/07/01 职场文书
六一儿童节标语
2014/10/08 职场文书
公司慰问信范文
2015/03/23 职场文书
给老师的保证书怎么写
2015/05/09 职场文书
图解排序算法之希尔排序Java实现
2021/06/26 Java/Android