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中使用Echarts可视化库的完整步骤记录
Nov 18 Vue.js
vue3.0中setup使用(两种用法)
Dec 02 Vue.js
vue+openlayers绘制省市边界线
Dec 24 Vue.js
vue 组件基础知识总结
Jan 26 Vue.js
vscode自定义vue模板的实现
Jan 27 Vue.js
vue使用lodop打印控件实现浏览器兼容打印的方法
Feb 07 Vue.js
Vue基本指令实例图文讲解
Feb 25 Vue.js
Vue接口封装的完整步骤记录
May 14 Vue.js
Vue和Flask通信的实现
May 19 Vue.js
Vue3如何理解ref toRef和toRefs的区别
Feb 18 Vue.js
vue中控制mock在开发环境使用,在生产环境禁用方式
Apr 06 Vue.js
Axios代理配置及封装响应拦截处理方式
Apr 07 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
用phpmyadmin更改mysql5.0登录密码
2008/03/25 PHP
深入理解PHP之数组(遍历顺序)  Laruence原创
2012/06/13 PHP
php基于PDO连接MSSQL示例DEMO
2016/07/13 PHP
CakePHP框架Session设置方法分析
2017/02/23 PHP
Javascript 函数对象的多重身份
2009/06/28 Javascript
鼠标放在图片上显示大图的JS代码
2013/03/26 Javascript
tangram框架响应式加载图片方法
2013/11/21 Javascript
对js关键字命名的疑问介绍
2014/04/25 Javascript
使用jquery.form.js实现图片上传的方法
2016/05/05 Javascript
jstree的简单实例
2016/12/01 Javascript
微信小程序 Button 组件详解及简单实例
2017/01/10 Javascript
jQuery.Form上传文件操作
2017/02/05 Javascript
react.js 获取真实的DOM节点实例(必看)
2017/04/17 Javascript
AngularJS页面带参跳转及参数解析操作示例
2017/06/28 Javascript
angularJs 表格添加删除修改查询方法
2018/02/27 Javascript
ng-alain表单使用方式详解
2018/07/10 Javascript
js中this的指向问题归纳总结
2018/11/28 Javascript
微信小程序实现通过js操作wxml的wxss属性示例
2018/12/06 Javascript
微信小程序实现swiper切换卡内嵌滚动条不显示的方法示例
2018/12/20 Javascript
详解如何使用router-link对象方式传递参数?
2019/05/02 Javascript
Vue v-for循环之@click点击事件获取元素示例
2019/11/09 Javascript
详解vue高级特性
2020/06/09 Javascript
Python嵌套列表转一维的方法(压平嵌套列表)
2018/07/03 Python
Python中调用其他程序的方式详解
2019/08/06 Python
Pandas实现dataframe和np.array的相互转换
2019/11/30 Python
如何在sublime编辑器中安装python
2020/05/20 Python
matplotlib 三维图表绘制方法简介
2020/09/20 Python
matplotlib部件之套索Lasso的使用
2021/02/24 Python
Probikekit日本:自行车套件,跑步和铁人三项装备
2017/04/03 全球购物
allbeauty美国:英国在线美容店
2019/03/11 全球购物
大一新生学期自我评价
2014/04/09 职场文书
2014年平安建设工作总结
2014/11/19 职场文书
2015年科普工作总结
2015/07/23 职场文书
MySQL慢查询的坑
2021/04/28 MySQL
Kubernetes部署实例并配置Deployment、网络映射、副本集
2022/04/01 Servers
Python绘制散乱的点构成的图的方法
2022/04/21 Python