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 相关文章推荐
vue3.0+vue-router+element-plus初实践
Dec 02 Vue.js
详解Vue中的自定义指令
Dec 07 Vue.js
vue3.0自定义指令(drectives)知识点总结
Dec 27 Vue.js
vue仿携程轮播图效果(滑动轮播,下方高度自适应)
Feb 11 Vue.js
vue-router懒加载的3种方式汇总
Feb 28 Vue.js
vue项目实现分页效果
Mar 24 Vue.js
浅谈vue2的$refs在vue3组合式API中的替代方法
Apr 18 Vue.js
解读Vue组件注册方式
May 15 Vue.js
一定要知道的 25 个 Vue 技巧
Nov 02 Vue.js
vue实现移动端div拖动效果
Mar 03 Vue.js
Vue Element plus使用方法梳理
Dec 24 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
建立动态的WML站点(三)
2006/10/09 PHP
php中将一段数据存到一个txt文件中并显示其内容
2014/08/15 PHP
PHP中cookie和session的区别实例分析
2014/08/28 PHP
如何使用PHP给图片加水印
2016/10/12 PHP
详解thinkphp实现excel数据的导入导出(附完整案例)
2016/12/29 PHP
动态加载js文件 document.createElement
2006/10/14 Javascript
一段效率很高的for循环语句使用方法
2007/08/13 Javascript
html组件不可输入(只读)同时任何组件都有效
2013/04/01 Javascript
javascript验证上传文件的类型限制必须为某些格式
2013/11/14 Javascript
轻松实现js图片预览功能
2016/01/18 Javascript
JavaScript表单焦点自动切换代码
2016/07/24 Javascript
微信开发 微信授权详解
2016/10/21 Javascript
Bootstrap的aria-label和aria-labelledby属性实例详解
2018/11/02 Javascript
vue elementui form表单验证的实现
2018/11/11 Javascript
写一个Vue Popup组件
2019/02/25 Javascript
Jquery属性的获取/设置及样式添加/删除操作技巧分析
2019/12/23 jQuery
[01:02:17]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG
2014/05/26 DOTA
[48:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第二场 1月29日
2021/03/11 DOTA
python通过索引遍历列表的方法
2015/05/04 Python
Python爬取网易云音乐上评论火爆的歌曲
2017/01/19 Python
python xlsxwriter库生成图表的应用示例
2018/03/16 Python
基于python中theano库的线性回归
2018/08/31 Python
使用python画社交网络图实例代码
2019/07/10 Python
python实现从本地摄像头和网络摄像头截取图片功能
2019/07/11 Python
Python爬虫爬取有道实现翻译功能
2020/11/27 Python
css3中背景尺寸background-size详解
2014/09/02 HTML / CSS
PAUL HEWITT手表美国站:德国北部时尚生活配饰品牌,船锚元素
2017/11/18 全球购物
HEMA英国:荷兰原创设计
2018/08/28 全球购物
P D PAOLA意大利官网:西班牙著名的珠宝首饰品牌
2019/09/24 全球购物
南京某公司笔试题
2013/01/27 面试题
初中女生自我鉴定
2013/12/19 职场文书
网络编辑岗位职责
2014/03/18 职场文书
大学生翘课检讨书范文
2014/10/06 职场文书
2014年团总支工作总结
2014/11/21 职场文书
Redis安装启动及常见数据类型
2021/04/14 Redis
vue实现简易音乐播放器
2022/08/14 Vue.js