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项目如何引入bootstrap、elementUI、echarts
Nov 26 Vue.js
vue祖孙组件之间的数据传递案例
Dec 07 Vue.js
vue 基于abstract 路由模式 实现页面内嵌的示例代码
Dec 14 Vue.js
Vue解决移动端弹窗滚动穿透问题
Dec 15 Vue.js
vue+openlayers绘制省市边界线
Dec 24 Vue.js
通过vue.extend实现消息提示弹框的方法记录
Jan 07 Vue.js
vue使用echarts画组织结构图
Feb 06 Vue.js
详解Vue3.0 + TypeScript + Vite初体验
Feb 22 Vue.js
vue中h5端打开app(判断是安卓还是苹果)
Feb 26 Vue.js
vue实现拖拽进度条
Mar 01 Vue.js
原生JS封装vue Tab切换效果
Apr 28 Vue.js
idea编译器vue缩进报错问题场景分析
Jul 04 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
使用Apache的rewrite技术
2006/06/22 PHP
在PHP中PDO解决中文乱码问题的一些补充
2010/09/06 PHP
php中通过curl模拟登陆discuz论坛的实现代码
2012/02/16 PHP
async和DOM Script文件加载比较
2014/07/20 PHP
jQuery之ajax技术的详细介绍
2013/06/19 Javascript
jQuery实现Twitter的自动文字补齐特效
2014/11/28 Javascript
jQuery中ajax的post()方法用法实例
2014/12/26 Javascript
使用jquery制作弹出框效果
2015/04/03 Javascript
JavaScript数据绑定实现一个简单的 MVVM 库
2016/04/08 Javascript
深入解析JavaScript中的arguments对象
2016/06/12 Javascript
jquery+CSS3实现3D拖拽相册效果
2016/07/18 Javascript
Easyui Tree获取当前选择节点的所有顶级父节点
2017/02/14 Javascript
Javascript中 toFixed四舍六入方法
2017/08/21 Javascript
jQuery实现基本动画效果的方法详解
2018/09/06 jQuery
vue使用Google地图的实现示例代码
2018/12/19 Javascript
layui点击按钮页面会自动刷新的解决方案
2019/10/25 Javascript
[48:30]LGD vs infamous Supermajor小组赛D组 BO3 第一场 6.3
2018/06/04 DOTA
[01:20:05]DOTA2-DPC中国联赛 正赛 Ehome vs VG BO3 第二场 2月5日
2021/03/11 DOTA
python对url格式解析的方法
2015/05/13 Python
python实现按行切分文本文件的方法
2016/04/18 Python
python K近邻算法的kd树实现
2018/09/06 Python
python学生管理系统
2019/01/30 Python
Python后台开发Django的教程详解(启动)
2019/04/08 Python
python openvc 裁剪、剪切图片 提取图片的行和列
2019/09/19 Python
为2021年的第一场雪锦上添花:用matplotlib绘制雪花和雪景
2021/01/05 Python
世界上最大的网络主机公司:1&1
2016/10/12 全球购物
美国领先的精品家居照明和装饰产品在线零售商:LightsOnline.com
2018/01/23 全球购物
美国50岁以上单身人士约会平台:SilverSingles
2018/06/29 全球购物
火山咖啡:Volcanica Coffee
2019/10/29 全球购物
Linux管理员面试经常问道的相关命令
2013/04/29 面试题
动漫专业高职生职业生涯规划书
2014/02/15 职场文书
2014信息公开实施方案
2014/02/22 职场文书
大学专科求职信
2014/07/02 职场文书
工商管理本科生求职信
2014/07/13 职场文书
金秋助学感谢信
2015/01/21 职场文书
入党积极分子党小组意见
2015/06/02 职场文书